【问题标题】:Get list of all instantiated views from application view in ember从 ember 中的应用程序视图中获取所有实例化视图的列表
【发布时间】:2013-07-09 20:17:13
【问题描述】:

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

【问题讨论】:

    标签: ember.js


    【解决方案1】:

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

    您可以通过Global views hashEmber.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);
      }
     });
    

    【讨论】:

    • 像魅力一样工作。谢谢!
    • @Mike 非常感谢。这非常适合我想做的事情。经过太多小时,这是一个完美的解决方案。如果你在爱尔兰,我欠你一杯啤酒。
    猜你喜欢
    • 1970-01-01
    • 2016-02-09
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    相关资源
    最近更新 更多