提问者:小点点

Ember js 2.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}}

我看到的是,我在my-组件中的myProperty总是设置为{}。它永远不会得到我在模板中提交的值。请注意,我还尝试过将属性定义为控制器上的字符串文字并将其提交,但它也无法识别。同样值得注意的是,我最初确实尝试在路由中定义计算属性,但我发现访问它的唯一方法是在模型挂钩本身中定义它,例如:

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

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

我不知道我在这里做错了什么。我肯定这是一些简单的事情,但是我已经没有想法了。有人能告诉我我在这里做错了什么吗?将计算属性从控制器传递给组件在任何方面都是糟糕的做法吗?任何建议都将不胜感激。非常感谢!


共1个答案

匿名用户

将计算的属性从控制器传递到组件中很好。

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

如果是这样,那么您需要在组件中对其调用. properties,以便访问控制器的一些属性值。

my-组件/模板. hbs

{{myProperty.property}}

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