我剛開始玩弄ember.js庫以查看它的全部內容。我想要顯示一個數據表,並在每一行的右邊有一個刪除按鈕,從表中刪除該項。我不知道如何做到這一點。注意,我也嘗試創建一個子視圖(ItemView)並在{{#each ...}} ... {{/ each}}部分內聯使用它,但是ember.js抱怨期待一個視圖類而不是ItemView,即使ItemView是使用Ember.View.create定義的。我也想知道爲什麼這不起作用。即使在文檔中的#each塊中使用子視圖的示例代碼也不起作用。ember.js集合視圖中的項目特定操作
即使我可以聲明一個名爲ItemView的子視圖來呈現每個單獨的Item,但我仍然不知道如何獲取該特定視圖的removeItem操作以知道從itemsController集合中刪除哪個項目。是否有視圖的屬性來取回子視圖綁定到集合中的Item實例?
這裏是我的視圖模板的一部分,而該名單:
{{#each App.itemsController}}
<tr>
<td>{{itemName}}</td>
<td><a href="#" {{action "removeItem" on="click"}}>Delete</a></td>
</tr>
{{/each}}
這裏是我的javascript:
window.App = Ember.Application.create();
window.App.Item = Ember.Object.extend({
itemName: "defaultItemName"
});
window.App.itemsController = Ember.ArrayProxy.create({
content: []
});
window.App.ListView = Ember.View.create({
templateName: 'listView',
removeItem: function (event) {
// ??? How do I figure out what item
// the user wanted to remove?
}
});
OK,當我嘗試這種方法,模板引擎似乎忽略任何
好的,打電話回答這個問題。模板問題似乎是一個單獨的問題。謝謝 – 2012-02-07 16:57:08
@JeremyBell re:缺失的標籤,你是否用{'標籤包圍了{{#each}}塊?如果不是,我相信'
不知道這是否最好的方式,但我已經把項目索引或項目名稱作爲標記的屬性,然後使用jQuery獲取它。
希望這會有所幫助。
來源
2012-02-06 23:25:14 Veebs
感謝T嗡嗡聲我找到了同樣的問題的答案。
在讀取trek intro之後,我寧願使用
{{action removeItem person}}
來明確指示應在哪個對象上執行操作。在視圖中,我會用
var person = evt.context;
來獲取person對象。你可以用這個小提琴jsfiddle.net/67GQb/127
來源
2012-12-23 09:59:55 penkovsky
根據[ ArrayController文檔](http://emberjs.com/api/classes/Ember.ArrayController.html),使用ArrayController而不是ArrayProxy是明智的,因爲它在概念上是一個控制器。 – penkovsky 2012-12-25 13:50:17
相關問題