1

我正在开发一个应用程序,我将在控制器中观察到的属性传递给组件,但我得到了未定义的值。我正在使用 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'),

在组件中,我正确地获得了最小值,但没有获得。它即将到来未定义。

如何获取组件中的属性

更新

我可以通过组件中的以下方法获取变量:-
1)如果我将变量直接传递给具有静态值的组件,则它可以工作。例如,在范围滑块组件中传递的最大值。
2)如果我传递一个在控制器中定义的静态变量,例如在控制器中

dummyValue:2345,

如果我将虚拟值传递给组件,我可以在组件部分读取它。

但是,如果该属性是计算属性,那么它就不起作用。

4

3 回答 3

1

我怀疑您的控制器正在为控制器部分的 currentVal 属性设置未定义的值。请看看正在工作的twiddle ..

于 2016-05-12T05:59:56.037 回答
0

如果你这样做value=currentVal,你必须访问它this.get("value")。如果您想访问它,this.get("currentValue")那么您需要使用该名称传递它:currentValue= currentVal.

于 2016-05-04T10:28:34.920 回答
0

我希望听起来不是很愚蠢,但是,您是否尝试在currentValand之间放置一个空格}}?它和一些帮手对我很有效。

像这样:

{{range-slider min="0" max="100" step="1" value=currentVal }}

真的,我需要使用 ember-xselect 来做到这一点,否则它不能正常工作。

于 2016-05-04T20:14:39.107 回答