如何在Emberjs View类的所有实例上设置属性

时间:2013-01-10 03:52:46

标签: ember.js

我有一个名为App.BlockView的视图类。它有一个名为selected的属性,点击此视图可切换selected属性。

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

请注意,我的视图是在{{View App.BlockView}}等手柄模板中创建的,因此我不会对它们进行引用。

1 个答案:

答案 0 :(得分:2)

您可以在类上注册和注销自己以完成此操作。 e.g。

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