如何在组件中传递控制器观察的属性

时间:2016-05-04 09:42:54

标签: ember.js ember-components

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

如何在组件中获取属性

更新

我可以通过以下组件中的方法获得变量: - 1)如果我将变量直接传递给具有静态值的组件,它就可以工作。 例如,在range-slider组件中传递的 max 值 2)如果我传递一个在控制器中定义的静态变量 例如在控制器

dummyValue:2345,

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

但是如果属性是计算属性那么它就无法正常工作。

3 个答案:

答案 0 :(得分:1)

我怀疑您的控制器是否将未定义的值设置为控制器部分中的currentVal属性。请查看正在运行的twiddle ..

答案 1 :(得分:0)

如果您执行value=currentVal,则必须访问this.get("value")。如果您想使用this.get("currentValue")访问它,则需要使用该名称传递它:currentValue= currentVal

答案 2 :(得分:0)

我希望听起来不是很愚蠢,但是你试图在currentVal}}之间留一个空格吗? 认真对我有一些帮助。

像这样:

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

真的,我需要使用ember-xselect执行此操作,否则它无法正常工作。

相关问题