在深层嵌套视图中获取对根容器视图的引用的简便方法

时间:2012-05-16 20:49:05

标签: ember.js

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

Ember.ContainerView.create {

   childViews: ['child1']

   value: null

   child1: Ember.ContainerView.create {

       childViews: ['subchild1']

       subchild1 : Ember.View.create {

            valueBinding: "parentView.parentView.value"

       }
   }
}

我想将root中的值与subchild1中的值绑定,但我发现调用了

parentView.parentView.parentView.property

不是很优雅。

2 个答案:

答案 0 :(得分:7)

您可以使用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"
       })
   })
});

答案 1 :(得分:0)

API文档中没有提到rootView属性。如果在value中定义child1怎么办?你仍然会有同样的问题,必须引用parentView.valuevalue实际上应该在控制器中定义,你的subchild1 valueBinding应该绑定到控制器中的属性。