我有以下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()
从视图中移除模型?
答案 0 :(得分:1)
如果您的第一行是在集合中搜索模型,则clear()将不起作用,因为clear()与视图关联,而不是模型,但您在模型上调用它。如果是模型,您可以直接使用collectionInstance.remove(message)
或message.destroy()
。但是,您需要视图来侦听要删除的模型以重新呈现视图。
要查看,请添加console.log(message)
以查看您的内容。