2012-08-04 33 views
2

我想寫我的第一個「真正的」燼應用程序。我已經閱讀了一些教程,現在我試圖將Ember與Ember Data結合使用來從Rails應用中獲取數據並顯示它。使用來自餘燼數據findQuery的結果作爲ArrayController contentBinding

我已經得到它來獲取數據,解析它,並顯示它,儘管我不相信它是以最好的方式。我有一個App.itemsController類似於此:

App.itemsController = Em.ArrayController.create({ 
    content: App.store.findQuery(App.Item, {visible: true}), 
}); 

我也有一個App.ItemIndexView,其模板看起來像

{{#each App.itemsController}} 
    {{id}}{{view App.ItemView item=this}} 
{{/each}} 

我有幾個關於這個問題。

首先,我希望允許用戶將項目可見性更改爲false。我有這樣的代碼在App.ItemView文件:

acknowledge: function() { 
    this.item.set('visible', false); 
    App.store.commit(); 
} 

紀錄被更新,但我要的是整個項目從視圖下降,事實並非如此。我如何使這條記錄從App.itemsController.content中刪除?

我的第二個問題,實際上也可能回答第一個問題,我是否完全關閉了boondocks,就我的實現而言?我覺得應該有一種方法可以讓我設置contentBinding: 'App.store.findQuery(App.Item, {visible: true})'之類的東西,並刪除不可見的東西,但我試過了,沒有任何東西顯示出來。所以我想知道是否有我的整個應用程序設置的方式有缺陷,並保持玩起來不錯。

回答

3

可以使用filter函數,而不是findQuery

content: App.store.filter(App.Item, function (item) { 
    return item.get('visible'); 
}) 

結果將底層數據變化時進行重新評估。儘管你仍然需要通過find/findAll/findQuery從服務器獲取數據。

+0

真棒,這正是我需要的。謝謝! – 2012-08-06 19:57:09