有没有办法可以在不触发更改事件的情况下更改模型上的属性?如果您立即传递{"silent":true},则下次更改属性时,将触发静默更改事件.如果没有触发更改事件,我可以安全地更改属性吗?
来自变化,Backbone 0.9.2:
// Silent changes become pending changes.
for (var attr in this._silent) this._pending[attr] = true;
// Silent changes are triggered.
var changes = _.extend({}, options.changes, this._silent);
this._silent = {};
for (var attr in changes) {
this.trigger('change:' + attr, this, this.get(attr), options);
Run Code Online (Sandbox Code Playgroud)
我认为最简洁的方法是,如果你真的想默认为静音(但仍然能够做静音:假)集合将是覆盖set.这应该这样做:
var SilentModel = Backbone.Model.extend({
set: function(attrs, options) {
options = options || {};
if (!('silent' in options)) {
options.silent = true;
}
return Backbone.Model.prototype.set.call(this, attrs, options);
}
});
Run Code Online (Sandbox Code Playgroud)