重新初始化组件

问题描述 投票:0回答:2

我想通过单击按钮来重新初始化组件。我使用下面的代码,但是似乎什么都没有发生。

protected function createItem(event:MouseEvent):void
{
    this.currentState="Viewer";
    this.initialize();
}

为什么?

apache-flex
2个回答
1
投票

是的,我指的是Flex组件的生命周期。我知道那里有Flex创建组件的四个步骤,但是有没有一种方法强制Flex重新执行这些步骤?

实际上,Flex Component Lifecycle的步骤远不止四个。有关更多信息,请参见herehere

您的意思是,作为Flex Component LifeCycle的一部分,有四种方法在运行;分别是createChildren(),commitProperties(),updateDisplayList()和measure()。在MX体系结构中,还有一个layoutChrome()方法,但这并不常用。

在Flex 4 Spark体系结构中;还有很多其他挂钩(partAdded(),partRemoved()),但它们都从MX体系结构扩展而来。

您可能会受益于使用无效方法:

  • 在组件上运行invalidateProperties()以强制commitProperties()在下一个呈现事件期间重新执行
  • 在组件上运行invalidateDisplayList()以强制updateDisplayList()方法在下一个呈现事件期间重新执行
  • 在组件上运行invalidateSize()以强制measure()方法在下一个呈现事件期间重新执行
  • 在Flex 4 Spark组件中,运行invalidateSkinState()以强制getCurrentSkinState()方法在下一个呈现事件期间重新执行。

    [您还可以使用removeChild()-用于Spark容器的removeElement(),然后使用addChild()-用于Spark容器的addElement从舞台中删除组件。这实际上将迫使该组件重新启动其过程。

    您还可以创建组件的全新实例,并删除旧实例。


0
投票

我已经解决了我的问题。如果我在这里发布自己的方法,可能会更好。

我只添加两行以调用服务,并将其放置到Compenent正在使用的变量中,一切正常。

    protected function createItem(event:MouseEvent):void
    {
        this.currentState="Viewer";
        this.initialize();

countResult.token = productdetailService.count();
countResult2.token = getNewProductIDService.count();

    }
© www.soinside.com 2019 - 2024. All rights reserved.