每個骨幹模型具有hasChanged
method:
hasChangedmodel.hasChanged([attribute])
自上次"change"
事件具有典型的改變?如果屬性已通過,則返回true
,如果該特定屬性已更改。
也許你可以用它來檢查你的第三種可能性。
順便說一句,回調不是異步的。錯誤和更改的回調觸發並set
returns之前返回:
set : function(attrs, options) {
//...
// Run validation.
if (!options.silent && this.validate && !this._performValidation(attrs, options)) return false;
//...
// Update attributes.
for (var attr in attrs) {
var val = attrs[attr];
if (!_.isEqual(now[attr], val)) {
now[attr] = val;
delete escaped[attr];
this._changed = true;
if (!options.silent) this.trigger('change:' + attr, this, val, options);
}
}
的_performValidation
呼叫觸發錯誤回調時,this.trigger
通話將調用每個屬性的回調。
謝謝!我的印象是異步的。 我會嘗試使用hasChanged ... –
@Che:任何碰到服務器的東西('sync','save',...)將是異步的,只有在瀏覽器中發生的任何事情都是同步的和順序的。 –
看看上面的代碼。 hasChanged()查找'this._changed',如果不將模型設置爲新值,它將不會被觸及。所以這是行不通的。 – maxl0rd