sproutcore 更改图像或图标并重新绘制

sproutcore change image or icon and repaint

我想把statechart.js里的icon/image改一下,也就是多次显示和隐藏。我尝试了一个标签图标和一个额外的子视图。问题:如何以编程方式 hide/change icon/childview?

有了额外的子视图,我能够更改值,但此更改在屏幕上不可见。

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

SproutCore 使用观察者模式来了解值何时发生变化。为了让它工作,SproutCore 要求您使用 set()get() 方法,以便它会看到更改并相应地更新显示。

尝试将最后一行更改为:

MyApp.mainPage.getPath('mainPane.navigationView.heart').set('value', 'icon-next');

此外,您绝对应该考虑使用 Bindings 轻松地将值绑定到控制器(对于这种简单的事情,甚至是普通的 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');

并且视图应该会自动更新。

如果您 运行 遇到问题,请 post 发表评论,我会尽力提供帮助。