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

Ember js 2.0 passing computed property from controller to component

我正在使用 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}}

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

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

但这对我不起作用,因为我需要来自控制器的值,而这些值在调用模型挂钩时不可用。

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

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

您的代码应该可以正常工作。一个 question/change 是:您是否需要在控制器的计算 属性 中返回一个嵌套对象? {属性: this.get('someProperty')}`

如果是这样,那么您需要在组件中对其调用 .property 才能访问控制器的 someProperty 值。

my-component/template.hbs

{{myProperty.property}}

这里是an ember-twiddle demonstrating the code working