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

這工作,併發送正確的刪除請求,但我覺得這樣的尷尬,呼籲從刪除方法的破壞方法。