Flex - проблема с привязкой в ​​блоках скрипта - PullRequest
0 голосов
/ 15 января 2010

Я работаю над мультифайловым загрузчиком и хочу установить каталог для загрузки на основе выбранного ID вопроса (который является именем каталога) в моей сетке данных.

Код можно найти здесь http://pastie.org/784185

Примерно так:

Я установил myQuestionID (каталог для загрузки), чтобы его можно было привязать (строки 136-137):

[Bindable] public var myQuestionID:int;

В моей таблице данных я использую обработчик изменений (строка 539):

change="setQuestionID();"

Мы устанавливаем переменную в функции setQuestionID (строки 400-407):

[Bindable (event="questionChange")]          
private function setQuestionID():void
{
     myQuestionID = questionsDG.selectedItem.QuestionID;
     dispatchEvent(new Event("questionChange"));
}

А затем попробуйте использовать его в моем сценарии загрузки (строки 448-475):

// initUploader is called when account info loads
public function getSessionInfoResult(event:ResultEvent):void{           

        // Get jsessionid & questionid (final directory) for CF uploader
        myToken = roAccount.getSessionToken.lastResult;             
        // BUG: myQuestion is null in actionscript, but okay in form.

        var postVariables:URLVariables = new URLVariables();
        postVariables.jsessionid = myToken;
        postVariables.questionid = myQuestionID;            

        multiFileUpload = new MultiFileUpload(
                    filesDG,
                    browseBTN,
                    clearButton,
                    delButton,
                    upload_btn,
                    progressbar,
                    uploadDestination,
                    postVariables,
                    350000,
                    filesToFilter
                    );

         multiFileUpload.addEventListener(Event.COMPLETE,uploadsfinished);         
}

Я вижу в своем MXML, что значение связано (строка 639):

<mx:Label text="{myDirectory}"/>

и он обновляется, когда я щелкаю строку в моей сетке данных. Однако, если я попытаюсь получить доступ к этому значению myQuestionID внутри любого скрипта действия, он будет отображаться как ноль (0). Я знаю, что мой загрузчик работает, так как я могу жестко закодировать myDirectory в известный каталог, и он будет загружен нормально.

Я действительно в тупике.

Ответы [ 2 ]

0 голосов
/ 19 января 2010

Причина questionid = null заключается в том, что getSessionInfoResult () вызывается вашим кодом инициализации до того, как установлено привязанное значение myQuestionID.

Таким образом, ваш загрузчик файлов (multiFileUpload) уже создан с myQuestionID = null.

Вам нужно создать экземпляр / передать значение в компонент multiFileUpload после его установки.

0 голосов
/ 15 января 2010

Используйте событие изменения dataGrid для установки myDirectory при каждом изменении выбора пользователем. это обновит значение myDirectory должным образом.

Если сделать someID как Bindable, это в основном решит вашу проблему, если вы не хотите использовать событие change на DG

...