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');

и представление должно автоматически обновиться.

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

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