Привязать логическую переменную внутри ArrayCollection

[Bindable]
public var isToggled:Boolean = true;

public var menuData:Array = [
    {label: "Sample", type: "check", toggled: {isToggled}}
];

Я пытаюсь привязать переменную isToggled к свойству toggled, но получаю следующее сообщение об ошибке: 1084: Синтаксическая ошибка: ожидание двоеточия перед точкой. Может быть, потому что он рассматривает {isToggled} как другой объект. Есть ли обходной путь для этого?


person Community    schedule 13.05.2011    source источник


Ответы (2)


Вы не можете получить преимущества декларативной привязки данных в коде ActionScript. Это разрешено только в тегах MXML. Но вы можете объявить свой Array или ArrayCollection с помощью MXML:

<fx:Declarations>
    <s:ArrayCollection id="myCollection">
        <s:source>
            <fx:Array>
                <fx:Object label="Sample" type="check" toggled="{isToggled}" />
            </fx:Array>
        </s:source>
    </s:ArrayCollection>
</fx:Declarations>
person Constantiner    schedule 13.05.2011
comment
Спасибо за Ваш ответ. У меня это было до того, как я начал преобразовывать свой код MXML в AS3. Мне действительно нужно использовать коллекцию AS3 в качестве dataProvider. - person ; 13.05.2011
comment
В вашем случае вы должны создать isToggled как get и set методы доступа (см. Более подробную информацию здесь) и выполните изменения поставщика данных в сеттере. - person Constantiner; 13.05.2011

Вы не можете использовать привязки ('{}') вне mxml, если не используете BindingUtils. Однако я бы тоже этого не рекомендовал, потому что теперь вы копируете свои данные.

Зачем вам нужны 2 логических значения? У вас уже есть данные, просто привяжите их с помощью свойства menuData.

person J_A_X    schedule 13.05.2011
comment
Я создаю MenuBar, используя шаблон MVC. На контроллере я загружаю свойство dataProvider с помощью ArrayCollection. Эти логические свойства представляют значения, которые могут измениться, когда пользователь щелкает меню или когда пользователь использует сочетание клавиш. - person ; 13.05.2011
comment
Вы все еще не ответили, почему вам нужно привязать свойство в массиве к его собственному свойству вместо прямого доступа к переменной в массиве ... - person J_A_X; 13.05.2011
comment
Когда пользователь использует сочетание клавиш, эта переменная изменяется, как и свойство toggled в меню. Но я дурак. Я собираюсь изменить свой подход к этой проблеме. Спасибо. - person ; 13.05.2011