0

假设我有以下结构 -

型号:文件夹

集合:文件夹

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

所以,

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/

4

1 回答 1

1

Backbone 有underscore.js作为依赖项。原因之一是 Backbone.js 集合实现了很多下划线方法。所以你的解决方案应该有效

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);
  }
});

这是否回答你的问题?

于 2013-08-22T20:37:51.763 回答