1

我有以下视图,我试图将点击事件绑定到删除按钮,但它似乎没有触发任何东西。在控制台中没有收到任何错误,它似乎没有绑定“点击”事件。

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

2 回答 2

2

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

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

在您的 ListView 中(因为我假设您根据您的示例使用 ListView 和 ListItemView ),然后您的onRemove方法将模型作为参数传递,以便您可以找到与之关联的视图。

于 2012-05-15T22:38:48.343 回答
0

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

this.el =

应该

$(this.el).html();

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

于 2012-05-16T16:29:03.203 回答