ここで、イベントはその特定のモデル インスタンスに関連付けられます。したがって、同じことが他のインスタンスのイベントをトリガーすることはありません..
var appointment = new Appointment({id: 1}); <--- Event is triggered
var appointment1 = new Appointment({id: 2}); <--- Event is not triggered
appointment.on('change',function() {
console.log('its changed');
});
イベントはモデルのインスタンスに直接アタッチされているためです。ただし、モデルを定義するときに同じことを行うと、モデルのすべてのインスタンスで同じことがトリガーされます。
var Appointment = Backbone.Model.extend({
initialize: function() {
this.on('change', function() {
console.log('its changed')
});
}
});
モデルのインスタンスが変更されると、イベントがトリガーされます。
var appointment = new Appointment({id: 1}); <--- Event is triggered
var appointment1 = new Appointment({id: 2}); <--- Event is triggered
ビューで同じことを話している場合、インスタンスに渡されるモデルは通常、イベントをリッスンし続けます。変更があれば、ビューの状態を変更するメソッドが呼び出されます。
var View = Backbone.View.extend({
initialize: function() {
// Listening to the event on the model which when
// triggered will render the view again
this.listenTo(this.model, 'change', this.render);
},
render: function() {
// do something
}
});
var view = new View();
view.render();