2014-02-20 2 views
2

내 컬렉션에 라우터에 추가 한 샘플 데이터를 추가 할 때만 발생하는 '추가'이벤트를 수신하는 이벤트 리스너가 있지만 내가보기에 더 많은 모델을 추가, 모두를위한 코드는 다음과 같습니다 :백본 컬렉션 '추가'이벤트가 실행되지 않음

컬렉션 :

Application.Collection.extend({ 
    name: "todos/todos", 
    initialize: function() { 
    this.on("add", console.log("added")); 
    }, 
    url: "/todo-application/todos" 
}); 

라우터 (이 이벤트를 발생) :

collection = new Application.Collections["todos/todos"](); 
var m = new Application.Model({ 
    title: 'Finish screencast', 
    done: true 
}); 
collection.add(m); 

보기 (이 발생하지 않습니다 이벤트) :

Application.View.extend({ 
    name: "todos/index", 
    events: { 
    "submit form": function(event) { 
     event.preventDefault(); 
     var attrs = this.serialize(); 
     this.collection.add(attrs); 
     this.$('input[name=title]').val(''); 
    } 
    } 
}); 

모델이 컬렉션에 추가되고 화면에 표시, 아직 샘플 데이터를 추가 할 때 컬렉션은 초기 pageload에 나에게 console.log()을 제공으로 확실히 작동보기의 collection.add .. .

편집 :

이벤트가 실제로 발사하지만, 어떤 이유로이 이벤트가 작동하지 않는 바인딩, 나는 this.listenTo 대신 .on를 사용하여 시도 내 백본 크롬 확장에 따르면. 당신이 객체에 on 기능을 사용하면

+1

당신이 컬렉션에 전달하는 보기? 예 : '새로운 뷰 ({collection : collection})' – ashley

답변

6

, 다음과 같이 해당 객체에 대해 eventcallback 결합되고, callback는 함수이어야 구성 할 때

this.on("add", function() { console.log("added"); });