Ember.js 在深度嵌套视图中获取对根容器视图的引用的简单方法

Ember.js 在深度嵌套视图中获取对根容器视图的引用的简单方法,ember.js,Ember.js,是否有一种简单的方法可以从Ember.ContainerView中的深度嵌套子视图访问根视图。我想绑定根的一个属性和一个子项: Ember.ContainerView.create { childViews: ['child1'] value: null child1: Ember.ContainerView.create { childViews: ['subchild1'] subchild1 : Ember.View.create {

是否有一种简单的方法可以从Ember.ContainerView中的深度嵌套子视图访问根视图。我想绑定根的一个属性和一个子项:

Ember.ContainerView.create {

   childViews: ['child1']

   value: null

   child1: Ember.ContainerView.create {

       childViews: ['subchild1']

       subchild1 : Ember.View.create {

            valueBinding: "parentView.parentView.value"

       }
   }
}
我想用subchild1中的值绑定根中的值,但我发现调用

parentView.parentView.parentView.property

不是很优雅。

API文档中没有提到
rootView
属性。如果
value
是在
child1
中定义的,该怎么办?您仍然会遇到同样的问题,即必须引用
parentView.value
<代码>值实际上应该在控制器中定义,并且子child1值绑定应该绑定到控制器中的属性。

您可以使用
nearestWithProperty
方法。请参见下面的示例

Ember.ContainerView.create({
   childViews: ['child1'],
   value: null,
   isRootView: true,

   child1: Ember.ContainerView.extend({
       childViews: ['subchild1'],

       subchild1 : Ember.View.extend({
           rootView: Ember.computed(function() {
               return this.nearestWithProperty('isRootView');
           }).property().cacheable(),
           valueBinding: "rootView.value"
       })
   })
});

我确实使用控制器,但在我的应用程序域中,我只能访问根视图。