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