2013-08-27 47 views
5

Backbone documentation說,每當一個模型的數據由服務器返回Backbonejs - 避免解析後保存

解析被調用時, 取,並保存。該功能通過原始響應對象, 應該返回的屬性哈希要在模式設置。

但我已經定製解析功能爲我的模型。我只想在我保存數據時取出數據時才執行它。

有沒有辦法做到這一點?我可以在解析函數中檢查我的響應。但是有沒有內置選項可以做到這一點?

+0

可能的重複:[here](http://stackoverflow.com/q/18243514/722238)。另外檢查[this](https://github.com/jashkenas/backbone/pull/2551)。 – fbynite

回答

7

這是關於保存模型骨幹source file

var model = this; 
var success = options.success; 
options.success = function(resp) { 
    model.attributes = attributes; 
    var serverAttrs = model.parse(resp, options); 
    if (options.wait) serverAttrs = _.extend(attrs || {}, serverAttrs); 
    if (_.isObject(serverAttrs) && !model.set(serverAttrs, options)) { 
     return false; 
    } 
    if (success) success(model, resp, options); 
    model.trigger('sync', model, resp, options); 
}; 

你可以在你的save通過自定義的選項,如:model.save(null, { saved: true }),然後在您的自定義parse

parse: function(response, options) { 
    if (options.saved) return this.attributes; 
    // do what you're already doing 
} 

我的天堂根本沒有測試過,但至少應該讓你開始。

+0

真棒作品很棒。謝謝。 – user10

4

只是通過解析:假到保存方法的選擇。

m = new MyModel() 
s.save(null, {parse: false})