1

我有以下主干视图:

    Chatbox.Views.Message = Backbone.View.extend({
    template: _.template($("#tmplt-Message").html()),

    events: {
        "click a.remove_link" : "clear"
    },
    initialize: function () {
        _.bindAll(this, 'render', 'remove');
        this.model.on('clear', this.clear);
        this.listenTo(this.model, 'destroy', this.remove);
    },

    render: function () {
        return $(this.el).append(this.template(this.model.toJSON())) ;
    },

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

当我单击该类的链接时,remove_linkclear()函数被正确调用并被destroy()执行。

我如何从clear()外部调用,在我的情况下,我有一个集合,我想删除这个集合中的一个模型。目前我正在尝试这样做:

    message = Chatbox.ChatLogCollection.where({ hash: hash});
    message.clear();
    Chatbox.ChatLogCollection.remove(message);

但我得到: TypeError: message.clear is not a function

如何调用clear()从视图中删除模型?

4

1 回答 1

1

如果您的第一行是在集合中搜索模型,则 clear() 将不起作用,因为 clear() 与视图相关联,而不是模型,但您在模型上调用它。如果是模型,可以直接使用collectionInstance.remove(message)或者message.destroy()直接使用。但是,您随后需要视图来侦听被移除的模型以重新渲染视图。

要检查,请添加console.log(message)以查看您得到的内容。

于 2013-09-29T15:47:21.350 回答