2016-04-19 6 views
1

異なるルートにクラッセを追加したいと思います。Iron:ルーターのイベントを変更ルーターに追加する

マイスクリプト:

Template.layout.rendered({ 

    rowClass: function() { 

     var blockGridContent = [ 
      'blogPostDetail', 
      'contact' 
     ]; 

     // Si on est sur l'une des pages de 'blockGridContent' 
     if (_.contains(blockGridContent, routeCurrent)) { 

      return 'block-grid'; 

     } 

    } 

}) 

このコード作業良いが、唯一のonload。私が "テスト"に乗り、私がページを変えると、クラスは残っています。

私はサーバやアイロン:ルータからチェックしなければならないと思いますが、どうすればよいか分かりません。

ご存じですか?

ありがとうございました! :)

答えて

1

コンポーネントの内部から現在のルートにアクセスしようとすると、保守が困難になることは悪いことです。代わりに、必要なすべてのデータを渡す必要があります。あなたのケースでは

、あなたはあなたのコントローラのdata方法で必要なものを達成することができます:

BlockGridController = RouteController.extend({ 
    ... 
    data: function() { 
    return { 
     ... 
     layout: {style: 'block-grid'}, 
    }; 
    }, 
}); 

そして、レイアウトテンプレートでアクセス:

<div class="{{layout.style}}"> 
+0

こんにちはユベール。私はこれを試してみましたが、うまくいきません。おそらく私はコントローラの後のデータをすでに持っているからでしょうか? –

+0

この方法から拡張してデータメソッドをオーバーライドする別のコントローラがある場合は、それは1つの追加ステップなしでは機能しません。子コントローラ内の既存のデータオブジェクトを明示的に拡張する必要があります。私が知っている最も簡単な方法は、データ処理のための親コントローラ、すなわち 'groupData'に子メソッド' data'を作成して 'this.groupData()'オブジェクトを拡張するカスタムメソッドを作成することです。 –

関連する問題