销毁事件不会从Backbone模型传播到Backbone集合

时间:2013-03-06 18:52:33

标签: javascript jquery backbone.js underscore.js

我有一个模型骨干集。

MyCollection = Backbone.Collection.extend({
   model: myMymodel;
});

MyModel = Backbone.Model.extend({
...
});

每个模型都有一个视图

myView = Backbone.View.extend({
  initialize: function() {
    this.model = new MyModel();
  };
});

服务器端没有持久性。这仅用于构建客户端信息。因此模型没有id,并且尚未配置Backbone.sync的URL。

在视图中,我想从集合中删除模型。

我尝试了以下内容:

this.model.trigger( "destroy" );

然而它不起作用。 destroy事件不会传播到集合。

知道我做错了吗?

谢谢,

2 个答案:

答案 0 :(得分:2)

我认为你根本没有实例化这个系列。至少从代码中得出结论。如果您只是创建模型实例但不将其添加到任何集合,this.model.trigger("destroy");将不执行任何操作。

myView = Backbone.View.extend({
  initialize: function() {
    this.coll = new MyCollection();
    this.model = new MyModel();
    this.coll.add(this.model);
  };
});

现在该模型是该集合的一部分:

this.model.destroy()

进行删除api调用并从集合中删除

this.collection.remove(this.model)

从集合中删除模型,但不进行删除api调用。

this.model.trigger("destroy");

在模型上触发destroy事件,但不会破坏模型。如果model是集合的一部分,则与collection.remove(this.model)相同。

答案 1 :(得分:0)

collection.remove(model)将是一个更合适的功能,因为您不是在服务器端持久保存模型。 Backbone.Collection.remove