Передача параметра в модуль flex через URL - PullRequest
1 голос
/ 05 февраля 2011

Я неоднократно использую несколько модулей в приложении Flex и изменяю условия, передавая параметры через переменную loaderInfo.url.Это отлично работает для первой итерации данного модуля, но при последующих попытках всегда будут отображаться те же параметры, что и при первом создании, независимо от того, что на самом деле используется.

Есть ли способ сбросить это значение при создании модуля?

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' (например, 'trace (this.loaderInfo.url);'), он всегда один и тот же (для данного модуля) независимо от того, чтофактически передается через строку? param =.Что я делаю неправильно?

Ответы [ 2 ]

1 голос
/ 06 февраля 2011

Я немного смущен вашим кодом.«moduleInfo» - это локальная переменная в loadPageModule, означающая, что после выполнения функции ее следует собирать.Как правило, добавление прослушивателя событий не позволяет объекту быть GC-объектом, но вы специально устанавливаете аргумент "weakListener" addEventListener в значение true.

Можете ли вы установить для аргумента weakListener addEventListener значение 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

Проверьте еще раз с этой конфигурацией и сообщите, если что-то изменится.

0 голосов
/ 06 февраля 2011

Ну, я не знаю, почему это делает то, что делает ... но ... эффективный способ передачи уникальных параметров различным экземплярам модуля - это использование параметра IModuleInfo.data. Метод url никогда не работал должным образом (для меня).

...