viewstack, вызывающий ошибку 1065 Переменная не определена? - PullRequest
0 голосов
/ 10 апреля 2010

У меня есть гибкое приложение, в котором у меня есть левый элемент управления TREE и правый стек просмотра, а когда кто-то выбирает дерево, он загружает именованный стек просмотра на основе значения скрытого узла XML дерева. Но он выдает ошибку 1065, не определенную в стеке просмотра, которая работала при последнем обновлении / перезагрузке браузера. Я не могу сказать, что это не связано с конкретным стэком, просто выдает ошибку при определенных событиях рендеринга. Я пытался использовать creationpolicy = "all" в стековом представлении, но, похоже, это не поможет.

public function treeChanged(event:Event):void {

            selectedNode=Tree(event.target).selectedItem as XML;
            //trace(selectedNode.@hidden);
            //Alert.show(selectedNode.@hidden.toString() + " *");

            if(selectedNode.@hidden.toString() == '' || selectedNode.@hidden.toString() == null){
                //Alert.show("NULL !");
                return;
            }


            mainviewstack.selectedChild = Container(mainviewstack.getChildByName(selectedNode.@hidden.toString())); //Container(mainviewstack.getChildByName(selectedNode.@hidden));

Если я добавлю в окно предупреждения перед опцией getchildbyname, у стека просмотра будет время для рендеринга, и все будет работать нормально, поэтому я думаю, что приложение не дает ему достаточно времени для загрузки стека просмотра?

1 Ответ

0 голосов
/ 10 апреля 2010

Где именно происходит ошибка? Есть ли у вас трассировка стека? Где вы регистрируете прослушиватель событий treeChanged()?

Вы можете попытаться добавить прослушиватель событий в прослушиватель событий для FlexEvent.CREATION_COMPLETE. Все компоненты должны быть инициализированы к этому времени.

то, как вы добавляете слушателя событий, мне кажется правильным, но я не уверен насчет сроков. Итак, вот пример добавления слушателя событий для CREATION_COMPLETE (при условии, что холст является вашим содержащим элементом):

<mx:Canvas creationComplete="onCreationComplete">
    <mx:Script><![CDATA[
            private function onCreationComplete():void {
                tree.addEventListener(TreeEvent.Change, treeChange)
            }
        ]]>
    </mx:Script>
    <mx:Tree id="tree" ... />
</mx:Canvas>

Пожалуйста, не то чтобы я не проверял это, я просто записал это на ходу. Некоторые имена могут быть неправильными, но это должно дать вам правильное представление.

...