2011-01-26 3 views
3

В коде MXMLОтключить предупреждения в одном месте

<fx:Script> 
    public var data:ArrayCollection = new ArrayCollection(); 
</fx:Script> 
<s:DataGroup dataProvider="{data}" /> 

Я получаю предупреждение: связывание

данных не будет в состоянии обнаружить присвоения «данные»

Я знаю, что поставщик данных в этом случае никогда не будет изменен, и в этом случае вы хотите отключить это предупреждение, но я не хочу полностью его отключать, -show-binding-options=false во всех проектах не является вариантом.

Как отключить предупреждение только в одном месте? Отключение всего файла не так хорошо, но приемлемо.

+0

До сих пор нет хорошего ответа. Добавление [Вставляемое] является излишним и не всегда возможно. – BrunoJCM

ответ

2

Как насчет того, чтобы сделать ваш data переменным связующим? Что-то вроде:

<fx:Script> 
    [Bindable] 
    public var data:ArrayCollection = new ArrayCollection(); 
</fx:Script> 
<s:DataGroup dataProvider="{data}" /> 
+0

Это было первое, что я пробовал. Не работает. – grep

+0

Интересно, что я только что открыл чистый проект только с кодом, который вы написали выше, и попытался добавить и удалить тег метаданных [Bindable]. После добавления предупреждения предупреждение исчезло. Не могли бы вы разместить большой фрагмент кода? – martineno

0

Вместо использования <fx:Script></fx:Script> вы можете использовать <fx:Declarations></fx:Declarations>. Любой объект, объявленный в этом элементе MXML, неявно связывается. Вот как ваш код будет выглядеть потом:

<fx:Declarations> 
    <s:ArrayCollection id="data" /> 
</fx:Declarations> 

<s:DataGroup dataProvider="{data}" /> 

Кроме того, он становится гораздо более удобным для чтения и нет сочетания ActionScript и MXML. Поскольку ваша коллекция объявлена ​​публичной, имеет значение, следует ли использовать ActionScript с [Bindable] или с использованием MXML.

BTW, общая рекомендация для чистого кода - полностью отделить ActionScript от MXML. Например, в моих проектах я создаю отдельный файл ActionScript для каждого компонента MXML в форме <NameOfComponent>Includes.as.

Смежные вопросы