我知道我可以设置 Backbone 模型属性的值,这样它就不会使用{silent:true}触发更改事件。我还知道,如果我将模型的属性设置为它已有的值,它不会触发更改事件,这几乎总是一件好事。但是,有没有办法强制更新模型以触发更改事件,即使它设置为相同的值?
因此,如果在我的模型中我设置了:
defaults:{
attributeToChange: "myValue"
}
然后在使用此模型的视图中,我调用:
this.model.set('attributeToChange', 'myNewValue', {silent:true});
该值将更改,但不会触发任何更改事件。但是,如果我想在设置属性值时触发更改事件,而不管它设置为什么?所以如果我只是这样做了
this.model.set('attributeToChange','myValue');
我可以添加一个参数来强制这被视为一种变化吗?我相信我可以使用
this.model.trigger('change:attributeToChange');
但我想知道是否有办法强制更改事件在没有这个的情况下触发。
额外的问题:如果我将模型的属性设置为它已有的值,这是否会使属性的先前值成为我启动更改之前的值?
this.model.set('attributeToChange','someValue');
this.model.set('attributeToChange','anotherValue');
this.model.set('attributeToChange','anotherValue');
console.log(this.model.previous('attributeToChange')); //someValue or anotherValue?