5

{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?
4

3 に答える 3