2016-11-01 3 views
1

방금 ​​backbone.js를 사용하여 스파를 만들기 시작했습니다. 나는 책 컬렉션을 모델 변경 내용을 듣게하려고 노력하고 있지만 아무 일도 일어나지 않습니다.Backbone.js 컬렉션이 모델 변경 이벤트를 듣지 않습니다.

var Book = Backbone.Model.extend({ 

    idAttribute: 'id', 

    defaults: { 
    id: null, 
    title: '', 
    author: '', 
    completed: false 
    } 

}); 

var BooksCollection = Backbone.Collection.extend({ 

    model: Book, 

    url: 'books', 

    initialize: function() { 
    this.listenTo(this.model, 'change', this.debug); 
    }, 

    debug: function() { 
    console.log('something happened !!!'); 
    } 

}); 

이 뷰는 다음과 같습니다 :이 모델과 모음입니다

var BookView = Backbone.View.extend({ 

    template: _.template($('#viewBook').html()), 

    events: { 
     "click #save": "bookSave" 
    }, 

    initialize: function() { 
     this.listenTo(this.model, 'change', this.render); 
    }, 

    render: function() { 
     $(this.el).html(this.template(this.model.toJSON())); 
     return this; 
    }, 

    bookSave: function() { 
     this.model.set({author: "nobody"}); 
    } 

}); 

난 저자가 변경 아무것도가 기록되지 않는 #save 버튼을 클릭

. 내가 어디가 잘못 됐니? 감사. 모델에서

+0

저장 사용()는 서버에 요청을 보냅니다. 컬렉션 모델의 속성 값만 변경하려고합니다. 컬렉션에서 속성 변경 내용을 수신 할 수 없습니까? 동기화 이벤트 만들을 수 있습니까? –

+0

보기와 모델이 동일한 모델을 참조하고 있습니까? 명시 적으로 새 모델을 작성하여 뷰에 전달할 수 있습니다. – Peter

답변

1

이벤트가 자동으로 수집까지 거품, 그래서 당신은 이런 식으로 직접 변경 모델을들을 수 있습니다 :

// in the collection 
initialize: function() { 
    this.listenTo(this, 'change', this.debug); 
}, 
관련 문제