sproutcore изменить изображение или значок и перекрасить
Я хочу изменить значок / изображение в statechart.js, то есть отобразить и скрыть его несколько раз. Я попробовал иконку на этикетке и дополнительный дочерний вид. Вопрос: Как программно скрыть / изменить значок / вид ребенка?
С помощью дополнительного дочернего просмотра я смог изменить значение, но это изменение не видно на экране.
SC.LabelView.design icon: 'icon-heart',
..
heart: SC.ImageView.extend({
classNames: ['icon-heart'],
value: 'heart.png'
}),
MyApp.mainPage.getPath('mainPane.navigationView.heart').value = 'icon-next';
1 ответ
SproutCore использует шаблон наблюдателя, чтобы узнать, когда значения изменились. Чтобы это работало, SproutCore требует, чтобы вы использовали set()
а также get()
методы, чтобы он видел изменения и мог соответственно обновлять отображение.
Попробуйте изменить свою последнюю строку на:
MyApp.mainPage.getPath('mainPane.navigationView.heart').set('value', 'icon-next');
Кроме того, вам определенно следует обратить внимание на использование привязок, чтобы легко привязать значение к контроллеру (или даже к простому SC.Object
что-то такое простое) и проследите за изменениями. Быстрый пример:
myApp.myController = SC.Object.extend({
iconValue: 'icon-heart'
})
myApp.myView = SC.ImageView.extend({
valueBinding: SC.Binding.oneWay('myApp.myController.iconValue')
})
Теперь, позже, вы можете сделать следующее из своей диаграммы состояний:
myApp.myController.set('iconValue', 'icon-next');
и представление должно автоматически обновиться.
Пожалуйста, оставьте комментарий, если у вас возникнут проблемы, и я сделаю все возможное, чтобы помочь.