Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对模型内集合中的事件作出反应?_Javascript_Backbone.js_Coffeescript - Fatal编程技术网

Javascript 对模型内集合中的事件作出反应?

Javascript 对模型内集合中的事件作出反应?,javascript,backbone.js,coffeescript,Javascript,Backbone.js,Coffeescript,当model1中的集合发生更改时,我需要更新model2中的集合。它们不能是对同一集合的引用,当一个集合发生更改时,我需要对更改作出反应,并将其应用于另一个模型中的集合 我该怎么做?这很难做到吗 谢谢 嗯 我们不能确定只有model1和model2,我们可以有model3和model4,所以我们不能手动绑定到这些模型,否则会出现这样的混乱: SubCollection extends Backbone.Collection Model extends Backbone.Model sub

model1
中的集合发生更改时,我需要更新
model2
中的集合。它们不能是对同一集合的引用,当一个集合发生更改时,我需要对更改作出反应,并将其应用于另一个模型中的集合

我该怎么做?这很难做到吗

谢谢

我们不能确定只有model1和model2,我们可以有model3和model4,所以我们不能手动绑定到这些模型,否则会出现这样的混乱:

SubCollection extends Backbone.Collection

Model extends Backbone.Model
   subcollection: new SubCollection()

model1 = new Model

model2 = new Model
那么,我们可以做些什么

将是在我们的应用程序中实现一个事件聚合器。并改为使用自定义事件

// not an option... >> huge mess :)
model1.bind('add', myFunction());
model2.bind('add', myFunction());
model3.bind('add', myFunction());
所以基本上,我们捕获我们想要的集合中的每一个事件,然后通过我们为整个应用程序提供的单个事件聚合器将其传递给一个常规事件,任何东西都可以绑定到该事件,并在引发适当的事件时执行操作,因此我们的集合可以绑定到它,并执行操作。由于您的收藏可能捕捉到它自己发送的事件,我们需要一个小测试来抵消这些情况。。。只有当另一个集合引发此事件时,才能继续

我们不能确定只有model1和model2,我们可以有model3和model4,所以我们不能手动绑定到这些模型,否则会出现这样的混乱:

SubCollection extends Backbone.Collection

Model extends Backbone.Model
   subcollection: new SubCollection()

model1 = new Model

model2 = new Model
那么,我们可以做些什么

将是在我们的应用程序中实现一个事件聚合器。并改为使用自定义事件

// not an option... >> huge mess :)
model1.bind('add', myFunction());
model2.bind('add', myFunction());
model3.bind('add', myFunction());

所以基本上,我们捕获我们想要的集合中的每一个事件,然后通过我们为整个应用程序提供的单个事件聚合器将其传递给一个常规事件,任何东西都可以绑定到该事件,并在引发适当的事件时执行操作,因此我们的集合可以绑定到它,并执行操作。由于您的收藏可能捕捉到它自己发送的事件,我们需要一个小测试来抵消这些情况。。。只有在其他收藏引发此事件时才继续。

我也想知道这一点。是否有一些标准的方法或公认的惯例来在层次结构中冒泡各种事件并监听/捕捉它们?我也想知道这一点。是否有一些标准的方法或公认的惯例来在层次结构中冒泡各种事件并侦听/捕获它们?