2012-05-15 115 views
1

我有以下視圖,我試圖將點擊事件綁定到刪除按鈕,但它似乎沒有觸發任何東西。沒有在控制檯中發現任何錯誤,它似乎沒有綁定「點擊」事件。Backbone.js刪除事件不觸發

span.delete元素深深地嵌套在一堆其他元素中,不確定是否重要,我也嘗試了它作爲一個直接的子元素,但仍然沒有去。

var ListRow = Backbone.View.extend(
{ 
    events: 
    { 
     'click span.delete': 'remove' 
    }, 

    initialize: function() 
    { 
     _.bindAll(this, 'render', 'unrender', 'remove'); 

     this.model.bind('remove', this.unrender); 
    }, 

    render: function() 
    { 
     this.el = _.template($('#tpl-sTableList_' + key + 'Row').html()); 

     return this; 
    }, 

    unrender: function() 
    { 
     $(this.el).fadeOut(); 
    }, 

    remove: function() 
    { 
     this.model.destroy(); 
    } 
}); 

回答

0

發現了問題,那是因爲我只設置EL的對象,而不是渲染它,所以不是:

this.el = 

應該

$(this.el).html(); 

否則一切按預期工作。

+1

是否存在「this。$ el」?所以應該是'this。$ el.html()' – HungryCoder

+0

是的,這也適用。 – Rob

1

沒有默認remove事件上的模型,只有從收集來一個remove事件,所以如果要刪除當模型被從集合中刪除一個視圖,它可能更好地把一個

this.collection.bind('remove', this.onRemove, this); 
在你的ListView

(我假設你正在使用一個ListView和ListItemView根據你的榜樣),然後你的onRemove方法傳遞模型作爲參數,所以你可以找到與它關聯的視圖。

+0

仍然無法得到這個工作,我會認爲,當我點擊span.delete時,至少會調用remove函數,但似乎沒有被觸發。 – Rob