2012-09-28 6 views
0

이것은 backbone.js 응용 프로그램을 만드는 첫 번째 시도입니다. 본인의 모델 인 연락처와 연락처 목록/콜렉션이 있습니다.컬렉션에서 모델 제거

연락처 목록의 초기 렌더링 및 가져 오기가 정상적으로 작동합니다.

이제 클릭 이벤트 후 연락처에서 연락처를 제거하려고합니다. ContactsView의 삭제 기능에서 뭔가 잘못하고있는 것처럼 보입니다. 해당 메소드 끝에서 console.log 연락처가 있으면 this.contacts 콜렉션이 변경되지 않습니다.

도움을 주시면 감사하겠습니다.

var Contact = Backbone.Model.extend({ 
}); 

var Contacts = Backbone.Collection.extend({ 
    model: Contact, 
    url: '/backbone/crm/contact' 
}); 

var ContactsView = Backbone.View.extend({ 
    initialize: function() { 
     this.contacts = new Contacts(); 
     this.contacts.bind("reset", this.render, this); 
     this.contacts.bind("change", this.render, this); 
     this.contacts.bind("remove", this.render, this); 
     this.contacts.fetch(); 
    }, 
    events: { 
     "click .delete": "delete" 
    }, 
    render: function() { 
     $("#contacts tbody").replaceWith(
           $("#contacts_tmpl").render({ 'contacts': this.contacts.toJSON() })); 
    }, 
    delete: function(e) { 
     var id = $(e.currentTarget).parents("tr").attr("id"); 
     var model = this.contacts.get(id); 
     this.contacts.remove(model); 
    } 
}); 

var contactsView = new ContactsView({ el: $("#contacts")}); 
+1

http://jsfiddle.net/nikoshr/EFWGU/에서 작동합니다. 삭제 클래스가있는 요소가 버튼입니까 또는 링크입니까? – nikoshr

+0

사실 내 렌더링 방법에 문제가있었습니다. 질문이 하나 더 있습니다. 그래서 다른 응답 때문에이 공간이 더 필요합니다. –

답변

0

모델이 컬렉션에서 효과적으로 제거되었습니다. 하지만 이제는 서버 쪽을 제거해야합니다.

나는 수행하여이를 구현했습니다 :

var Contacts = Backbone.Collection.extend({ 
    model: Contact, 
    url: '/backbone/crm/contact', 
    initialize: function() { 
     this.bind("remove", this.delete, this); 
    }, 
    delete: function(model) { 
     model.destroy(); 
    } 

이 작동하고 올바른 삭제 요청을 보내지 만 나는 어색 이런 종류의 발견은, a는 삭제 방법에서 destroy 메소드를 호출 할 수 있습니다.

관련 문제