Ember js 2.0将计算属性从控制器传递给组件

时间:2016-02-01 22:50:24

标签: javascript ember.js ember-2.0.0

我正在使用Ember 2.3。

就像标题所说我试图将一个计算属性从我的控制器传递给我的组件。我不知道我做错了什么,但它不适合我。这就是我在做的事情:

在我的控制器中:

import Ember from 'ember';

export default Ember.Controller.extend({
  someProperty: 'someValue',

  myComputedProperty: Ember.computed('someProperty', function(){
    return {property: this.get('someProperty')};
  })

});

我的组件:

export default Ember.Component.extend({
   myProperty: {}
});

在我的模板中:

{{my-component myProperty=myComputedProperty}}

我看到myProperty中的my-component始终设置为{}。它永远不会得到我交给模板的价值。注意我还尝试在我的控制器上将属性定义为字符串文字并将其传递给它并且它也不被识别。另外值得注意的是,我最初尝试在我的路线中定义计算属性,但我发现我可以访问它的唯一方法是它是否在模型钩子本身中定义,如:

model(params) {
   return {
   myComputedProperty: Ember.computed()...........
  };
}

但是这对我来说并不适合,因为我需要来自控制器的值,这些值在调用模型挂钩时是不可用的。

我不知道我在这里做错了什么。我确信这很简单,但我的想法已经不多了。谁能告诉我这里做错了什么?是否以任何方式将计算属性从控制器传递给组件坏习惯?任何意见,将不胜感激。非常感谢!

1 个答案:

答案 0 :(得分:3)

将计算属性传递给控制器​​中的组件是可以的。

您拥有的代码应该正常运行。一个问题/更改是:您是否需要在控制器的计算属性中返回嵌套对象? {property:this.get(' someProperty')}`

如果是,那么您需要在组件中调用.property,以便访问控制器的someProperty值。

我组分/ template.hbs

{{myProperty.property}}

此处an ember-twiddle demonstrating the code working