Ember.js:如何访问嵌套视图实例

Jo *_*iss 18 javascript ember.js

假设我正在定义嵌套视图,就像这样(JSFiddle上的代码示例):

App.ParentView = Ember.View.extend({
    ChildView: Ember.View.extend({ ... }),
    method: function() {
        this.get('ChildView') // => this is the class, not the instance :(
    }
});?

{{#view App.ParentView}}
    {{#view ChildView}}
        ...
    {{/view}}
{{/view}}
Run Code Online (Sandbox Code Playgroud)

我想避免在父视图和子视图之间绑定很多属性.相反,我想做点什么this.getPath('ChildView.foo').但是this.get('ChildView')返回我用Ember.View.extend创建的类,而不是实例,所以我无法访问属性.

是否有规范的方法从父视图的方法内部访问子视图的当前实例?

Bra*_*est 24

您可以传递视图viewName变量并通过父路径访问视图.

http://jsfiddle.net/Tx3NP/5/

{{#view App.ParentView}}
  {{#view childView viewName="childViewInstance"}}
     ...
  {{/view}}
{{/view}}
console.log(this.get('childViewInstance.value'));
Run Code Online (Sandbox Code Playgroud)

或者你可以像@weltraumpirat一样推荐并访问this.get('childViews')数组.

  • 谢谢,这非常有用.我采用了一种调用我的类`ChildView`(大写)并使用`viewName ="childView"`(非大写)作为实例名称的约定.这使得它合理地不混淆. (2认同)