1

当你查看 Backbone.js 的源代码时,版本 0.9.2,有

“_onModelEvent”:

此方法负责将事件从模型转发到集合(冒泡)。

因此,当您更改作为集合的一部分的模型中的某些内容(使用“set”)时,会有一个更改事件,并且因为(在 add 方法中)_onModelEvent 方法已绑定到模型(“all”),这方法被调用。

我还看到,有一个销毁方法,它会触发一个“销毁”事件。

但是为什么作者(在_onModelEvent的第一行)检查事件名称是“添加”还是“删除”。通常模型上没有“添加”事件?

我不明白这个。

有人可以向我解释吗?

提前致谢

_onModelEvent: function(event, model, collection, options) {
  if ((event == 'add' || event == 'remove') && collection != this) return;
4

1 回答 1

1

使用 Backbone,您可以创建嵌套模型结构和集合。因此,您可以创建一个集合,其中模型是一个集合。这就是检查到位的方式:

所以从带注释的来源

_onModelEvent:

每次集合中的模型触发事件时调用的内部方法。当模型更改 ID 时,集合需要更新其索引。所有其他事件只是通过代理。源自其他集合的“添加”和“删除”事件将被忽略。

因此,如果您有一个集合作为模型。如果项目被添加到子集合/从子集合中删除,它不会委托addorremove事件,因为在这种情况下,只有子集合而不是父集合被更改。

于 2013-01-23T09:30:07.570 回答