2012-09-28 92 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(); 
    } 

这工作,并发送正确的删除请求,但我觉得这样的尴尬,呼吁从删除方法的破坏方法。