Проблема со строкой меню Flex ActionScript XMLList

#apache-flex #actionscript #menubar #xmllist

#apache-flex #actionscript #строка меню #xmllist

Вопрос:

Я работаю в Flex 4, и wana использует элемент управления MenuBar, для заполнения его элементов требуется XMLList, но проблема в том, что я хочу применить условия if к подпунктам моего меню, позвольте мне объяснить мою проблему на примере:

 var menubarXML:XMLList;

menubarXML=
<>
   <menuitem label="File">
   <menuitem label="New Sheet" data="new_sheet"/>
   <menuitem label="Open Existing" data="open_sheet"/>
   <menuitem label="Print" data="print"/>
   //i want to apply condition here     
   <menuitem label="Save" data="save_pdf"/>
   <menuitem label="Exit" data="exit"/>
   </menuitem>
</>
  

Например, как я могу применить условие типа if (anyflag ==true) отключить мой подпункт меню save, конечно, вопрос прост, и эта проблема может быть легко решена в Java и PHP.

Ответ №1:

В вашем XML-файле должен быть атрибут с enable = true или false;

 <menuitem label="File">
<menuitem label="New Sheet" data="new_sheet" enable = "true"/>
<menuitem label="Open Existing" data="open_sheet" enable = "true"/>
<menuitem label="Print" data="print" enable = "false"/>
</menuitem>
  

Теперь при разборе вашего xml проверьте, является ли значение enable истинным или ложным, на основе этого вы можете управлять своим меню и его дочерними элементами.

Комментарии:

1. Это все можно легко сделать, но проблема в условии IF, всякий раз, когда мы применяем какое-либо условие if else, xml перестает работать…

2. @Dilshad Anwer не могли бы вы привести пример, как вы применяете какое-либо условие? Пока не ясно…

3. menubarXML=<><метка меню=»Файл»> if (Entry_Tag=»Y») // это, если необходимо { <метка меню= «Новый лист» data=»new_sheet» enabled=»true»/> <метка меню=»Открыть существующий» data=»open_sheet» enabled=»true»/> } else { <метка меню= «Новый лист» data=»new_sheet» enabled=»false»/ > <метка меню=»Открыть существующие» данные=»open_sheet» включено = «false»/> } <метка меню= «Печать» данные=»print»/> <метка меню=»Сохранить» данные=»save_pdf»/> <метка меню=»Выход» данные=»exit»/> </menuitem></>

4. @Dilshad, Отредактируй свой первоначальный ответ!

Ответ №2:

Вы также можете определить свой собственный дискриптор для своего меню, в котором вы переопределяете метод IsEnabled, чтобы включить или отключить элементы с использованием тега при рендеринге, пример которого выглядит как

 public class MyDescriptor extends DefaultDataDescriptor
{

    public function MyDescriptor()
    {
        super();

    }

    override public function isEnabled(node:Object):Boolean
    {
                    return 'true'==node.anytag;
    }

}
  

и Меню затем создается как

 menu = Menu.createMenu(this, dataprovider, false);
menu.dataDescriptor = new MyDescriptor();
  

Надеется, что это поможет