我可以在骨干集合中的特定模型上触发事件吗?

时间:2013-08-22 20:10:27

标签: events backbone.js

说我有以下结构 -

型号:文件夹

收藏:文件夹

在我的集合视图中,我想在具有特定名称的文件夹上触发事件 -

所以,

FolderCollectionView = Backbone.View.extend({
    ...
    ...
    editFolder: function() {
        this.collection.findWhere({ name: "abcd" }).trigger("editThisFolder");
    }
});

FolderModelView = Backbone.View.extend({
   ...
   ...
   editThisFolder: function() {
       //This should get called
   }
});

这可能吗?我正在使用事件聚合器,但是,我还没有找到一种方法,我可以在特定文件夹上触发事件,我可以使文件夹视图订阅集合视图事件,但随后所有文件夹视图都响应该事件,我还没有找到一种方法只使特定的文件夹视图响应收集事件。或者以某种方式从集合视图触发特定文件夹视图上的事件。

我是新手,所以如果我错过了重要的事情,请告诉我。

事件聚合器参考 - http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-in-backbone-js/

1 个答案:

答案 0 :(得分:1)

Backbone有underscore.js作为依赖。其中一个原因是Backbone.js Collections实现了a whole lot of underscore methods。所以你的解决方案应该可行

this.collection.findWhere({ name: "abcd" }).trigger("editThisFolder");

当然,您应该让FolderView听取该事件并调用该函数

var FolderView = Backbone.View.extend({
  initialize: function() {
    // assuming a folder model assigned to each view
    this.listenTo(this.model, 'editThisFolder', this.editThisFolder);
  }
});

这是否回答了你的问题?