1

我已经定义了一个处理点击事件的应用程序视图。当有人在视图外单击时,应用程序单击功能会触发并将所有子视图的“活动”属性设置为 false。我通过分配“viewName”来选择特定的视图。这对我的几个视图很有用,但是我遇到了一个在页面呈现后实例化的视图的障碍(它处于可以在模板中变为 true 的条件)。我希望 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;   
    } 
});
4

1 回答 1

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);
  }
 });
于 2013-07-09T20:43:59.960 回答