主干.js删除未触发的事件

Backbone.js remove event not triggering

本文关键字:事件 js 删除 主干      更新时间:2023-09-26

我有以下视图,我试图将单击事件绑定到删除按钮,但它似乎没有触发任何内容。 在控制台中没有收到任何错误,它似乎没有绑定"click"事件。

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();
    }
});

模型上没有默认的remove事件,只有一个来自集合的 remove 事件,因此如果要在模型从集合中删除时删除视图,最好放置一个

this.collection.bind('remove', this.onRemove, this);

在你的列表视图中(因为我假设你正在使用基于你的示例的列表视图和列表项视图),然后你的onRemove方法将模型作为参数传递,以便你可以找到与之关联的视图。

发现问题,那是因为我只设置了 el 对象,但没有渲染它,所以而不是:

this.el =

应该是

$(this.el).html();

否则,一切都按预期工作。