有没有办法可以在不触发更改事件的情况下更改模型上的属性?如果您立即传递{"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);
答案 0 :(得分:11)
您可以使用model.attributes['xyz'] = 123
直接更改模型属性。
答案 1 :(得分:5)
我认为,如果你真的想要默认为静默(但仍然能够做静音:假)集,那么最简洁的方法就是覆盖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);
}
});
答案 2 :(得分:0)
item.set(
{
sum: sum
,income: income
},
{silent: true}
);
因为骨干0.9.10