从ember中的应用程序视图获取所有实例化视图的列表

时间:2013-07-09 20:17:13

标签: ember.js

我已经定义了一个处理点击事件的应用程序视图。当有人在视图外部单击时,应用程序单击功能将触发并将所有子视图的“活动”属性设置为false。我通过分配'viewName'来选择特定的视图。这适用于我的几个视图,但是我遇到了一个在页面渲染后实例化的视图(它在条件中可以在模板中变为真)。我希望applicationView可以选择它,但事实并非如此。如何获取应用程序中实例化的所有视图的列表(最好不使用内部API)?

App.ApplicationView = Ember.View.extend({
  templateName: 'application',
  click: function () {
    this.get('childViews').filterProperty('viewName','applicationViewClickChild').setEach('active', false);
  }
});

App.PersonView = Ember.View.extend({   
    templateName: 'views/person',   
    active: false,   
    viewName: 'applicationViewClickChild',   
    click: function () {
        if (this.get('active')) {
            this.set('active', false);
        } else {
            this.set('active', true);
        }
        return false;   
    } 
});

1 个答案:

答案 0 :(得分:3)

  

从ember

中的应用程序视图获取所有实例化视图的列表

您可以通过Global views hash Ember.View.views查看实例化视图列表。例如:

App.ApplicationView = Ember.View.extend({
  templateName: 'application',
  click: function () {
    var keys = Em.keys(Ember.View.views);
    var views = keys.map( function(key) { 
      return Ember.View.views[key]
    });
    views.filterProperty('viewName','applicationViewClickChild').setEach('active', false);
  }
 });