删除backbonejs中的模型和更新视图

时间:2013-09-29 15:31:34

标签: javascript backbone.js

我有以下Backbone View:

    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_link的链接时,正确调用clear()函数并执行destroy()

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

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

但我明白了:        TypeError:message.clear不是函数

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

1 个答案:

答案 0 :(得分:1)

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

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