[英]deleteRecord in findAll() vs findQuery()
我只是遇到以下問題:在deleteRecord()
的模型上調用deleteRecord()
,該模型的content
是使用findQuery(<model name>, {})
在路由中設置的,即使deleteRecord
,也不會從ArrayController
刪除該模型。成功了(我打電話給save
來save
操作)。 但是,當我將其切換為findAll()
,一切都按預期工作。 任何想法為什么會這樣?
我正在使用Ember 1.4.0-beta.1 + canary.4ffecd62和Ember Data 1.0.0-beta.4 + canary.7af6fcb0。
find('type', {})
/ findQuery('type', {})
創建一個RecordArray。 findAll('type')
/ find('type')
實際上返回一個實時RecordArray,它具有商店中的所有當前記錄。
為了更全面地了解這一點,在store all
/ filter
上還有另外兩個方法返回Live RecordArrays,但它們不對服務器進行記錄調用。 您可以將findAll('type')
/ find('type')
視為調用服務器然后調用all
方法的方法。
如果您願意,可以根據findQuery
的結果創建過濾器,以作弊並獲得類似的效果。
model: function() {
return this.get('store').find('color', {dummy:'data'});
},
setupController:function(controller, model){
var filter = this.store.filter('color', function(color){
return model.contains(color);
});
this._super(controller, filter);
},
為了在不創建其他過濾器的情況下獲得所需的效果,您還可以在控制器中調用如下代碼:
record.deleteRecord;
record.save(); // or record.destroyRecord() to combine the two calls
this.get('model').removeObject(record);
這將從兩種類型的數組對象中刪除已刪除的記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.