簡體   English   中英

findAll()與findQuery()中的deleteRecord

[英]deleteRecord in findAll() vs findQuery()

我只是遇到以下問題:在deleteRecord()的模型上調用deleteRecord() ,該模型的content是使用findQuery(<model name>, {})在路由中設置的,即使deleteRecord ,也不會從ArrayController刪除該模型。成功了(我打電話給savesave操作)。 但是,當我將其切換為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);
  },

http://emberjs.jsbin.com/OxIDiVU/114/edit

為了在不創建其他過濾器的情況下獲得所需的效果,您還可以在控制器中調用如下代碼:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM