2012-05-13 70 views
1

有沒有辦法阻止backbone.js集合在刪除我的模型時被毀壞?如何防止在銷燬時去除模型的集合?

每次它發生了,我收到一個「刪除」觸發事件從收集

collection.on("remove", this.handleRemove) 

已經嘗試通過一些參數,但沒有

model.destroy({silent: false, remove: false})

+2

你爲什麼要這麼做?如果事情不再存在,怎麼能收集? – Bergi

+0

其實model.destroy仍然堅持客戶端上的對象。我想操縱它,並最終再次保存,而不創建一個新的模型,並添加到集合 – mateusmaso

+0

我的問題是,我有一個可編輯的textarea模型視圖,當它打字我打電話POST/UPDATE,但如果文本是空的我應該刪除但不刪除視圖,因爲用戶仍然可以鍵入(在同一個視圖上創建/刪除單個模型) – mateusmaso

回答

1

的解決方案是重寫骨幹模型破壞功能。我在成功和回調策略的抽象模型上做了這個:

參數「數據」對應於原始參數「resp」。

destroy: function(successCallback, errorCallback) 
{ 
    var options = { wait: true }; 
    var model = this; 

    successCallback = successCallback || function() {}; 
    errorCallback = errorCallback || function() {};    

    var destroy = function() 
    { 
     model.trigger('destroy', model, model.collection, options); 
    }; 

    options.success = function(data) 
    { 
     if ('SUCCESS' === data.responseCode) 
     { 
      if (options.wait || model.isNew()) 
       destroy(); 

      successCallback(data); 

      if (!model.isNew()) 
       model.trigger('sync', model, data, options); 
     } 
     else 
     { 
      errorCallback(data); 
     } 
    }; 

    if (this.isNew()) 
    { 
     options.success(); 
     return false; 
    } 

    var xhr = this.sync('delete', this, options); 

    if (!options.wait) 
     destroy(); 

    return xhr; 
} 
相關問題