2017-02-01 7 views
1

emberjsアプリケーションで作業しています。私のモデルに基づいてn個のボタンを動的に作成します。これを行うために、テンプレート内のforeachを使用してモデルをループし、モデル内の各要素のボタンを作成します。emberjsのハンドルバーforeachループの最初の要素のクラスを設定するには

{{#each model.zones as |zone|}} 
     <li><a id="{{zone.zone_id}}" {{action 'setData' zone.currenttemp zone.setpoint zone.mode zone.zone_id on='click'}} class="zones">{{zone.zone_name}}: {{zone.currenttemp}}&deg;F</a></li> 
{{/each}} 

各ボタンは「ゾーン」クラスに属していますが、アプリが読み込まれると、最初のボタンのみが「アクティブ」クラスの一部になります。私はemberjsのハンドルバーが@first演算子をサポートしていないことを理解しているので、これについてどうやって行くのか分かりません。

答えて

2

eachブロックはindex変数が付属しています、そしてあなたは、いくつかの他のチェックを持っているしたい場合、あなたはember-truth-helpersアドオンをインストールすることができifインラインヘルパー

{{#each model.zones as |zone index|}} 
     <li><a id="{{zone.zone_id}}" {{action 'setData' zone.currenttemp zone.setpoint zone.mode zone.zone_id on='click'}} class={{if index 'zones' 'active'}}>{{zone.zone_name}}: {{zone.currenttemp}}&deg;F</a></li> 
{{/each}} 

と組み合わせることができます。

class={{if (eq index 0) 'active' 'zones'}} 
+0

ヘルパーでアップデートしました。最初のインデックス0については 'false'と評価され、' active'クラスが適用され、残りのものは 'true'と評価されて' zones'クラスが適用されます... [Twiddle sample](https:///ember-twiddle.com/94394199278453d05bda24fd4a244f47?openFiles=templates.application.hbs%2C) – kumkanillam

+0

を実証するために、完璧に働いた、ありがとう! –

関連する問題