Backbone documentation說,每當一個模型的數據由服務器返回Backbonejs - 避免解析後保存
解析被調用時, 取,並保存。該功能通過原始響應對象, 應該返回的屬性哈希要在模式設置。
但我已經定製解析功能爲我的模型。我只想在我保存數據時取出數據時才執行它。
有沒有辦法做到這一點?我可以在解析函數中檢查我的響應。但是有沒有內置選項可以做到這一點?
Backbone documentation說,每當一個模型的數據由服務器返回Backbonejs - 避免解析後保存
解析被調用時, 取,並保存。該功能通過原始響應對象, 應該返回的屬性哈希要在模式設置。
但我已經定製解析功能爲我的模型。我只想在我保存數據時取出數據時才執行它。
有沒有辦法做到這一點?我可以在解析函數中檢查我的響應。但是有沒有內置選項可以做到這一點?
這是關於保存模型骨幹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
}
我的天堂根本沒有測試過,但至少應該讓你開始。
真棒作品很棒。謝謝。 – user10
只是通過解析:假到保存方法的選擇。
m = new MyModel()
s.save(null, {parse: false})
可能的重複:[here](http://stackoverflow.com/q/18243514/722238)。另外檢查[this](https://github.com/jashkenas/backbone/pull/2551)。 – fbynite