我正在使用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()...........
};
}
但这对我不起作用,因为我需要来自控制器的值,而这些值在调用模型挂钩时是不可用的。
我不知道我在这里做错了什么。我肯定这是一些简单的事情,但是我已经没有想法了。有人能告诉我我在这里做错了什么吗?将计算属性从控制器传递给组件在任何方面都是糟糕的做法吗?任何建议都将不胜感激。非常感谢!
将计算的属性从控制器传递到组件中很好。
您拥有的代码应该可以正常工作。一个问题/更改是:您是否需要在控制器的计算属性中返回一个嵌套对象?{属性:this. get('一些属性')}'
如果是这样,那么您需要在组件中对其调用. properties
,以便访问控制器的一些属性
值。
my-组件/模板. hbs
{{myProperty.property}}
这是一个演示代码工作的余烬。