2012-10-19 106 views
0

我想通過單擊按鈕重新初始化一個權限。我使用下面的代碼,但似乎沒有任何事情發生。重新初始化一個權限

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

爲什麼?

+0

您試圖重新啓動哪個組件或類型的組件? this.initialize()方法做了什麼?你如何定義重新初始化?您是指Flex組件的生命週期;並且想要重新創建組件的所有子項?或者這意味着什麼? – JeffryHouser

+0

是的,我指的是Flex組件的生命週期。我知道Flex有四個步驟來創建組件,但是是否有強制Flex再次執行這些步驟的方法? – Samuel

+0

並且initialize()是初始化此組件內部結構的方法。 – Samuel

回答

1

是的我指的是Flex組件的生命週期。我知道flex有四個步驟來創建組件,但是有沒有方法 來強制Flex再次執行那些步驟?

實際上,Flex組件生命週期中的步驟要多於四個步驟。有關更多信息,請參見herehere

您可能的意思是,有四種方法作爲Flex Component LifeCycle的一部分運行;那些是createChildren(),commitProperties(),updateDisplayList()和measure()。在MX體系結構中,還有一個layoutChrome()方法,但不常用。

在Flex 4 Spark體系結構中;還有很多其他的鉤子(partAdded(),partRemoved()),但它們都是從MX架構擴展而來的。

您可以使用失效方法中受益:在組件上

  • 運行invalidateProperties()來強制的commitProperties()重新在組件上,在未來執行渲染事件
  • 運行invalidateDisplayList()迫使updateDisplayList()方法到下一個渲染事件期間的組件上重新執行
  • 運行invalidateSize()來強制措施()方法來重新執行下一個渲染事件期間
  • 在FLE x 4,Spark組件,運行invalidateSkinState()以強制getCurrentSkinState()方法在下一次呈現事件期間重新執行。

    您還可以使用removeChild() - removeElement()作爲Spark容器,然後使用addChild() - addElement作爲Spark容器,從舞臺中刪除組件。這基本上會迫使組件重新啓動它的過程。

    您也可以創建一個全新的組件實例並刪除舊的實例。

+0

雖然我的bug可能通過重新初始化組件來解決。是的,任何方式謝謝你的答案,我知道我的問題很混亂。 – Samuel

0

我已經解決了我的問題。如果我在這裏張貼我的方法,可能會更好。

我只是添加兩行來調用服務,並將其放置到Compenent正在使用的變量中,並且一切正常。

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

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

    }