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

#apache-flex #data-binding #actionscript #boolean #arraycollection

#apache-flex #привязка данных #actionscript #логическое #arraycollection

Вопрос:

 [Bindable]
public var isToggled:Boolean = true;

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

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

Ответ №1:

Вы не можете воспользоваться преимуществами декларативной привязки данных в коде ActionScript. Это разрешено только в тегах MXML. Но вы можете объявить свой Array or 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>
  

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

1. Спасибо за ваш ответ. У меня это было до того, как я начал конвертировать свой код MXML в AS3. Мне действительно нужно использовать коллекцию AS3 в качестве поставщика данных.

2. В вашем случае вы должны создать метод доступа isToggled as get и set (смотрите более подробную информацию Здесь ) и выполнить изменения поставщика данных в установщике.

Ответ №2:

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

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

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

1. Я создаю панель меню, используя шаблон MVC. На контроллере я передаю свойство dataProvider с использованием ArrayCollection. Эти логические свойства представляют значения, которые могут изменяться, когда пользователь нажимает на меню или когда пользователь использует сочетание клавиш.

2. Вы все еще не ответили, почему вам нужно привязать свойство в массиве к его собственному свойству вместо прямого доступа к переменной в массиве…

3. Когда пользователь использует сочетание клавиш, эта переменная изменяется, и свойство toggled в меню также изменяется. Но я веду себя глупо. Я собираюсь изменить свой подход к этой проблеме. Спасибо.