2011-02-05 59 views
1

在Flex應用程序中反覆使用幾個模塊,並通過傳遞參數'loaderInfo.url'var來改變條件。這適用於給定模塊的第一次迭代,但後續嘗試總是會看到與第一次創建相同的參數,而不管實際使用的是什麼。通過url傳遞參數到flex模塊

當創建模塊時是否有某種方法可以重置此值?

private var moduleInfo : IModuleInfo; 
private function loadPageModule(pathString : String, pageParam : String) : void 
{ 
    pathString = "modules/" + pathString + ".swf?param=" + pageParam; 

    moduleInfo = ModuleManager.getModule(pathString); 
    moduleInfo.addEventListener(ModuleEvent.READY, onPageModuleReady, false, 0, true); 
    moduleInfo.load(ApplicationDomain.currentDomain, null, null); 
} 

當我認爲在「CreationComplete」處理帕拉姆;無論在什麼實際上是通過了相同的每一次(一個給定模塊)(例如「追蹤(this.loaderInfo.url)」)通過?param =字符串。我究竟做錯了什麼?

+0

我在說話時遇到了這個問題。我在應用程序中多次加載模塊,並通過查詢字符串傳遞數據。它在模塊加載時第一次工作,但每次之後的數據都是相同的。 – goalie7960 2011-05-23 20:19:53

+0

所以你反覆加載一個相同的模塊,但每次都發送不同的URL參數? (想了解你的問題) – ethrbunny 2011-05-24 13:12:30

回答

0

嗯,我不知道爲什麼這是在做它做什麼..但..一個有效的方式來傳遞獨特的參數模塊的不同實例是使用IModuleInfo.data參數。 url方法從來沒有正常工作(對我來說)。

1

我有點困惑你的代碼。 「moduleInfo」是loadPageModule中的局部變量,意思是在函數執行後它應該被垃圾收集。通常添加一個事件監聽器會阻止對象被GC'ed,但是你特別將addEventListener的「weakListener」參數設置爲true。

您可以將addEventListener的weakListener參數設置爲false,並手動刪除onPageModuleReady中的監聽器?如下所示:

// change true to false on this line 
moduleInfo.addEventListener(ModuleEvent.READY, onPageModuleReady, false, 0, false); 

// tweak onPageModuleReady 
private function onPageModuleReady(e:Event):void { 
e.target.removeEventListener(ModuleEvent.READY, onPageModuleReady); 
// that will allow the object to be GC'ed 
...rest of your code 

使用該配置再次進行測試,並在情況發生變化時報告回來。