1

我有一个名为App.BlockView. 它有一个名为的属性selected,单击此视图会切换该selected属性。

当我捕获某些事件(例如单击容器的背景)时,我想selected在所有视图(或将其设置为 true 的视图)上将属性设置为 false。ember 中是否有任何方法可以收集视图类的所有实例——无论它们在何处以及如何实例化——并在它们上设置属性?

请注意,我的视图是在车把模板中创建的{{View App.BlockView}},因此我不保留对它们的引用。

4

1 回答 1

2

您可以让视图在类上注册和注销自己来完成此操作。例如

App.BlockView.reopenClass({
  blockViews: [],
  deselectAll: function() {
    this.blockViews.forEach(function(blockView) {
      blockView.set('selected', false);
    });
  }
});

App.BlockView.reopen({
  init: function() {
    this._super();
    App.BlockView.blockViews.pushObject(this);
  },
  destroy: function() {
    App.BlockView.blockViews.removeObject(this);
    this._super();
  }
});
于 2013-01-10T05:15:04.503 回答