我知道我可以設置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?
好的,讓我試着回答我自己的獎金問題,因爲我意識到在寫出來後很容易進行測試:似乎如果將模型屬性的值設置爲值已經有了,該模型的該屬性_(this.model.previous(...))_的前一個值將註冊爲在設置_new_(但重複)值之前的值。所以上面的例子應該把'anotherValue'寫到控制檯。 – flyingace 2013-04-10 16:28:22