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