2012-05-15 82 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