初始化组件

时间:2012-10-19 10:46:29

标签: flex

我想通过单击按钮初始化组件。我使用以下代码,但似乎没有发生任何事情。

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

为什么?

2 个答案:

答案 0 :(得分:1)

  

是的我指的是Flex Component生命周期。我知道有   flex的四个步骤来创建一个Component,但是有一个方法   强制Flex再次执行这些步骤?

实际上,Flex组件生命周期的步骤远不止四个。有关详细信息,请参阅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()方法在下一个渲染事件期间重新执行。

    您还可以使用针对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();

    }