【发布时间】:2016-05-04 09:42:53
【问题描述】:
我正在开发一个应用程序,我将在控制器中观察到的属性传递给组件,但我得到了 undefined 值。我正在使用 ember 1.6
我如何称呼组件:-
{{range-slider min="0" max="100" step="1" value=currentVal}}
组件实现是:-
App.RangeSliderComponent = Ember.Component.extend({
tagName:'',
currentValue:function(){
return this.get('value');
}.property('value'),
minValue:function(){
return this.get('min');
}.property('min'),
didInsertElement:function(){
console.log("component with currentValue="+this.get("currentValue")+" minValue="+this.get('minValue'));
}
})
currentVal 用作组件值是控制器中观察到的属性。每当我滑动滑块时,currentVal 都会更改,因为它与组件绑定。默认值为 50。控制器工作正常。
控制器部分是:-
currentVal:50,
currentValChanged:function(){
console.log("currentVal changed");
}.observes('currentVal'),
在组件中,我得到了正确的 min 值,但没有得到 value。它即将到来未定义。
如何获取组件中的value属性?
更新
我可以通过组件中的以下方法获取变量:-
1)如果我将变量直接传递给具有静态值的组件,它就可以工作。
例如,在范围滑块组件中传递的 max 值。
2)如果我传递一个在控制器中定义的静态变量
例如在控制器中
dummyValue:2345,
如果我将虚拟值传递给组件,我可以在组件部分读取它。
但如果 属性是计算属性,则它不起作用。
【问题讨论】:
-
那么
currentValue与别名有什么不同,您可以用currentValue: Ember.computed.alias('value')更简单地定义它吗?您的控制器是否正在观察某些属性应该与任何事情无关。 -
即使使用 computed.alias() 也无法正常工作
-
只是猜测,但属性名称
value可能存在问题,请尝试将其更改为val。