我已经定义了一个处理点击事件的应用程序视图。当有人在视图外部单击时,应用程序单击功能将触发并将所有子视图的“活动”属性设置为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;
}
});
答案 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);
}
});