Как передать наблюдаемое свойство контроллера в компонент

Я работаю над приложением, в котором передаю свойство, которое наблюдается в контроллере, компоненту, но получаю неопределенное значение. Я использую 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) Если я передаю переменную непосредственно компоненту со статическим значением, это работает. например, максимальное значение, переданное в компоненте Range-Slider.
2) Если я передам статическую переменную, которая определена в контроллере, например, в контроллере

dummyValue:2345,

Если я передаю фиктивное значение компоненту, я могу прочитать его в компонентной части.

Но если свойство является вычисляемым свойством, то оно не работает.

3 ответа

Решение

Я сомневаюсь, что ваш контроллер устанавливает неопределенное значение для свойства currentVal в части контроллера. Пожалуйста, посмотрите на работающий тиддл..

Если вы делаете value=currentVal ты должен получить к нему доступ this.get("value"), Если вы хотите получить к нему доступ с this.get("currentValue") тогда вам нужно передать его с таким именем: currentValue= currentVal,

Я надеюсь, что звучит не очень глупо, но вы пытались поставить пробел между currentVal а также }}? Это серьезно сработало для меня с некоторыми помощниками.

Как это:

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

На самом деле, мне нужно сделать это с помощью ember-xselect, иначе он не работает должным образом.

Другие вопросы по тегам