【问题标题】:How to get property of parent View in Ember?如何在 Ember 中获取父视图的属性?
【发布时间】:2012-03-05 23:40:57
【问题描述】:

这可能非常简单,但我很难弄清楚如何访问父视图的属性:

App.ParentView = Ember.View.extend({
  foo: 'bar',

  child_view: Ember.View.extend({

    init: function(){
       // get the value of App.ParentView.foo
       //  ???
    }
  })

});

【问题讨论】:

  • 请注意,在许多情况下访问父视图是代码异味的标志。不过,这里不知道细节就很难说更多了。

标签: ember.js


【解决方案1】:

获取视图:this.get('parentView')

获取foo的值this.get('parentView.foo')

【讨论】:

  • 如果您想在车把中访问父视图,您可以使用{{view.parentView.foo}}。即:{{#view Wrapper}}<div>{{view.parentView.foo}}</div>{{/view}}
  • 新手抬头!上面的代码说 App.parentView 至极具有误导性。无论您为视图指定的名称如何,您都应该始终 get("parentView")。
  • 谢谢。为我节省了很多时间。
【解决方案2】:

在 1.0.pre 之前的 Ember 中,您还可以使用 getPath 方法,而不是 get() 链,以获得更简洁(通常更安全)的代码:

this.getPath("parentView.foo");

Ember 1.0.pre 最酷的地方在于 get() 方法现在支持路径,所以你可以编写

this.get("parentView.foo");

【讨论】:

    【解决方案3】:

    汤姆是对的。我还创建了一个 JS Fiddle 来演示这一点,并说明了特殊的 contentView 属性,它在这种情况下很有用:http://jsfiddle.net/rSLQK/2/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-14
      • 2017-07-24
      • 2019-12-24
      • 2020-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-12
      相关资源
      最近更新 更多