我想通过单击按钮初始化组件。我使用以下代码,但似乎没有发生任何事情。
protected function createItem(event:MouseEvent):void
{
this.currentState="Viewer";
this.initialize();
}
为什么?
答案 0 :(得分:1)
是的我指的是Flex Component生命周期。我知道有 flex的四个步骤来创建一个Component,但是有一个方法 强制Flex再次执行这些步骤?
实际上,Flex组件生命周期的步骤远不止四个。有关详细信息,请参阅here和here。
您可能意味着有四种方法作为Flex Component LifeCycle的一部分运行;那些是createChildren(),commitProperties(),updateDisplayList()和measure()。在MX体系结构中,还有一个layoutChrome()方法,但这种方法并不常用。
在Flex 4 Spark架构中;还有很多其他的钩子(partAdded(),partRemoved()),但它们都扩展了MX架构。
您可以从使用失效方法中受益:
在Flex 4,Spark组件中,运行invalidateSkinState()以强制getCurrentSkinState()方法在下一个渲染事件期间重新执行。
您还可以使用针对Spark容器的removeChild() - removeElement() - 然后使用addChild() - Spark容器的addElement从舞台中删除组件。这实际上会迫使组件重新启动它的过程。
您还可以创建组件的全新实例并删除旧组件。
答案 1 :(得分:0)
我已经解决了我的问题。如果我在这里发布我的方法,可能会更好。
我只需添加两行来调用服务并将其放置到Compenent正在使用的变量中,一切正常。
protected function createItem(event:MouseEvent):void
{
this.currentState="Viewer";
this.initialize();
countResult.token = productdetailService.count();
countResult2.token = getNewProductIDService.count();
}