2012-09-08 85 views
2

我發現Ember.js中的句柄模板的限制是絕對的癱瘓。你不能執行任意的javascript。你所得到的是一組固定的能力(if/else,each,action,view,outlet)以及在當前上下文對象上輸出屬性值的能力。在Ember.js中生成一個循環計數器#each

這意味着我無法弄清楚如何使用循環計數器來做一些簡單的事情,例如,基於它在集合中我在迭代中的位置拍攝循環內的html元素上的位置ID 。

將它作爲計算屬性添加到模型中是沒有意義的,因爲這不是模型級知識(同一模型可能位於不同視圖中的兩個不同位置)。在PostgreSQL上使用Ember-1.0-pre,Ember-Data和Rails以及ActiveModel :: Serializers。

回答

3

我建議寫一個句柄助手,在其中你可以執行任意的javascript。某些示例參見 http://handlebarsjs.com

或者,您可以在您的子視圖(而不是您的模型)上包含位置ID。

+0

我會研究第一個,我不太明白你的意思。 – odigity

+0

我的意思是你可以使用視圖來表示你的集合中的每個模型。這些可以在{{each}}幫助程序中或使用Ember.CollectionView(請參閱itemViewClass屬性)迭代。這些子視圖可以從父視圖獲取它們的位置ID。 –

+0

尚未檢出CollectionView,但僅查看和ArrayController。我會看看我能用它做什麼 - 謝謝。 – odigity

2

原來提供了一個循環計數器的最後一個例子在此頁面上的確切主題:

http://handlebarsjs.com/block_helpers.html

(丹摹已經指出,在他的回答中「寫一個幫手」的解決方案,但由於。已經有一個發佈的例子,我想創造一個新的答案,使鏈接更加突出)

9

隨着handlebars.js(v 1.0.rc1)我可以這樣做:

{{#each links}} 
    <li>{{@index}} - {{url}}</li> 
{{/each}} 
+2

它似乎沒有工作(了嗎?) –

+1

我的版本是1.0.0.rc.3,當我添加這個時,我得到一個意外的令牌錯誤。 –

+1

@Deli我也收到了一個「意想不到的令牌」 - 你解決了這個問題嗎? – splattne