여기서 이벤트는 특정 모델 인스턴스에 연결됩니다. 따라서 동일한 인스턴스가 다른 인스턴스에 대해 이벤트를 트리거하지 않습니다.
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 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();