我知道我可以设置Backbone模型属性的值,这样它就不会使用{silent:true}触发更改事件.我也知道如果我将模型的属性设置为它已经具有的值,它将不会触发更改事件,这几乎总是一件好事.但是,有没有办法强制更新模型以触发更改事件,即使它被设置为相同的值?
所以如果在我的模型中我设置:
defaults:{
attributeToChange: "myValue"
}
Run Code Online (Sandbox Code Playgroud)
然后在使用这个模型的视图中我调用:
this.model.set('attributeToChange', 'myNewValue', {silent:true});
Run Code Online (Sandbox Code Playgroud)
值将更改但不会触发更改事件.但是,如果我想在设置属性的值时触发更改事件,无论它设置为什么,该怎么办?所以,如果相反,我只是做了
this.model.set('attributeToChange','myValue');
Run Code Online (Sandbox Code Playgroud)
是否有一个我可以添加的参数会强制将其视为一个变化?我相信我可以使用
this.model.trigger('change:attributeToChange');
Run Code Online (Sandbox Code Playgroud)
但是我想知道是否有办法在没有这个的情况下强制改变事件.
额外问题:如果我将模型的属性设置为已有的值,这是否会使属性的先前值成为我发起更改之前的值?
this.model.set('attributeToChange','someValue');
this.model.set('attributeToChange','anotherValue');
this.model.set('attributeToChange','anotherValue');
console.log(this.model.previous('attributeToChange')); //someValue or anotherValue?
Run Code Online (Sandbox Code Playgroud) backbone.js ×1