Сколько логики должно быть включено в атрибут Flex MXML? - PullRequest
1 голос
/ 19 августа 2009

Должна ли программная логика быть вставлена ​​в атрибут MXML?У меня есть несколько кнопок, которые могут или не могут отправлять события на основе состояния связанных компонентов (например, DataGrid или List), и я пытаюсь выяснить, достаточно ли проста логика для простого встраивания в один изатрибуты Event в MXML.

Вот как я это делаю:

<mx:Script>
    <![CDATA[
        private function sendEvent1():void {
            if (list.selectedIndex != -1) {
                dispatchEvent(new Event("click!"));
            }
        }
    ]]>
</mx:Script>
<mx:List id="list" dataProvider={listData} />
<mx:Button label="Click!" click="sendEvent1()" />

В этом примере код ActionScript, содержащийся в теге Script, содержит логику для определения того, стоит или нетсобытие должно быть отправлено.

Кнопка, однако, может быть немного изменена, устраняя необходимость в функции sendEvent1:

<mx:Button label="Click!" click="if (list.selectedIndex != -1) dispatchEvent(new Event("click!")" />

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

  • MXML менее читабелен (он становится длинным и загроможденным)
  • Поскольку для нажатия кнопки требуется больше вызовов функций, логика в MXML становится гораздо более громоздкой.
  • Внедрение логики в MXML делает его менее интуитивнымIve (для меня по крайней мере).Если я хочу узнать логику MXML, я более склонен заглянуть в тег Script, где я ожидаю ActionScript.

Есть ли другие плюсы за вставкой логики в MXMLатрибут?Я видел это использование все чаще и чаще, и я хочу убедиться, что я не упускаю никаких веских причин изменить то, как я делаю вещи.

Ответы [ 2 ]

1 голос
/ 20 августа 2009

Не стоит вставлять в линию более одного вкладыша. Трудно читать, трудно отлаживать. Чтобы сделать встроенный код более читабельным, поместите его в фигурные скобки и напишите его в несколько строк.

1 голос
/ 20 августа 2009

Я не могу придумать какой-либо реальной выгоды от добавления логики в код MXML, если код имеет длину более одной строки, например, предупреждение и, возможно, самое большее, безоговорочно устанавливая переменную. Представьте себе, что вы пытаетесь прочитать оператор switch в строке.

...