Apache flex Flex:ButtonBarButton中的附加标签

Apache flex Flex:ButtonBarButton中的附加标签,apache-flex,data-binding,button,Apache Flex,Data Binding,Button,我试图扩展ButtonBarButton以包含一个额外的标签,该标签显示viewstack(选项卡栏的数据提供程序)中各个框的更新次数 我可以获得额外的标签(名为indicatorLabel)来从数据中读取初始值,但我不能让它像实际的“label”属性那样自动更新。我的理解是,您可以绑定到数据对象,但情况似乎并非如此 viewstack中使用的框有一个名为_indicator的属性 [Bindable] public var _indicator:String; 我知道它正在正确更新,因为我

我试图扩展ButtonBarButton以包含一个额外的标签,该标签显示viewstack(选项卡栏的数据提供程序)中各个框的更新次数

我可以获得额外的标签(名为indicatorLabel)来从数据中读取初始值,但我不能让它像实际的“label”属性那样自动更新。我的理解是,您可以绑定到数据对象,但情况似乎并非如此

viewstack中使用的框有一个名为_indicator的属性


[Bindable]
public var _indicator:String;
我知道它正在正确更新,因为我可以在框中看到它正在更新(框中还绑定了一个标签)。它似乎只是没有更新buttonbarbutton

我的buttonbarbutton类具有以下内容(其中在creationComplete中调用init()


[SkinPart]
public var indicatorLabel:spark.components.Label;

private function init():void
{
 indicatorLabel = data._indicator;
 addEventListener("dataChange", onDataChangeHandler);
}

private function onDataChangeHandler(e:Event):void
{
 trace(e.target.label + ' ' + e.target._indicator);
}

我猜我对数据绑定或传递到按钮的数据对象的假设是不正确的。非常感谢您的帮助。

我几天前在这里回答了一个与此问题密切相关的问题。它有点抽象,但也应该回答您的问题。请看

至于你关于性能改进的另一个问题:你只需要记住,每当你使用绑定时,编译器都会生成一些事件侦听器来侦听数据中的更改。当然,这不是一次性组件甚至是一堆实例的问题,但如果你有首先,当这些组件不再需要时,垃圾收集器不会那么容易地清理它们;其次,根据您的实现,可能会同时触发数千个事件

<强>底线< /强>:您可以考虑<代码>委托属性()/>代码>方法>强>性能调整< /强>,因此在实际遇到性能问题之前不应该考虑它。

另一方面从架构的角度来看:这种方法允许更清晰地分离组件及其外壳。使用
主机组件
/
绑定
方法,您可以说外壳知道的太多了:它必须知道它的主机组件及其属性er one允许您拥有一个完全“哑”的皮肤。因此,我再次倾向于使用一次性组件的绑定和高度可重用组件的
commitProperties()


最后,这一切都是一种权衡(因为“干净”的方式更复杂,工作也更繁重),你可以根据具体情况做出权衡决定。

看看我几天前回答的这个问题().这有点抽象,但它也应该回答你的问题。RIAstar,这很酷。我对commitProperties不太了解。这有多大的性能改进?我确实发现了我的问题,e.target。_指标应该是e.target.data。_指标。另外,如果你写一个答案,我会把它标记为回答:-)因此,未来的读者可以看到一个直接的答案。