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

Ember js 2.0 passing computed property from controller to component

本文关键字:控制器 组件 属性 js 计算 Ember      更新时间:2023-09-26

我正在使用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()...........
  };
}

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

我不知道我在这里做错了什么。我确定这很简单,但我的想法已经用完了。谁能告诉我我在这里做错了什么?将计算属性从控制器传递到组件是否以任何方式是不良做法?任何建议将不胜感激。多谢!

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

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

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

my-component/template.hbs

{{myProperty.property}}

这是一个演示代码工作的余烬。