Мы используем прямой биндинг через фигурные скобки в XML для значения поля enabled. Вот и все. Единственное неудобство, нужно использоавть HTML entity вместо простого знака «меньше».
Повторюсь, самый простой и понятный способ биндования — это именно через фигурные скобки в MXML. Биндинги через BindingUtils нужны если вам надо связать значение в динамически созданном объекте с каким-то другим значением в вашем классе. Например привязать всплывающее окно редактирования, к выбранному в списке объекту.
Данный пример был приведен для того, чтобы разъяснить, что такое составной объект в методе bindProperty и не более того. Никто не говорит, что надо делать именно так. Я просто пытался на простых примерах объяснить механизм.
Да, вы правы на счет простого и понятного способа через фигурные скобки в mxml, но бывают ситуации, когда этого недостаточно. Я имею в виду такие задачи, когда идет работа с динамически создаваемыми компонентами.
Например, у меня была задача, когда необходимо было, чтобы дочерние элементы, лежащие на компоненте, имели соотносимые с родительскими координаты и размеры. Т.е. в случае изменения размера родительского компонента необходимо пересчитывать координаты и размеры каждого из дочерних элементов. Плюс ко всему этому дочерние элементы создавались динамически. Эта задача очень легко решилась при помощи связывания, а именно использования метода bindSetter совместно со составным объектом.
Я думаю, что каждый найдет применение какого-то из вышеописанных методов в своей уникальной задаче.
Пытаюсь использовать цепочку для простенького примера: есть массив, состоящий из элементов типа Object, и есть Label, который должен отображать конкретный атрибут конкретного элемента этого массива. Пробовал вот так:
BindingUtils.bindProperty(myLabel, «text», this, [«myArray[1]», «myAttr»]);
С точки зрения массива (имеется в виду Array) мы можем использовать только одно свойство, на которое можно повесить binding это length. Он будет срабатывать только тогда, когда у массива изменяется количество элементов.
Для твоего случая лучше использовать bindProperty:
Примерно так. Все зависит от задачи. Если данный подход это все, что тебе нужно тогда отлично, иначе придется обдумывать как избавиться от массива. Обращайся, обдумаем.
Проблема решилась, спасибо за ответ.
Прокатило следующее:
BindingUtils.bindProperty(myLabel, «text», this, [«myArray», «1», «myAttr»]);
т.е. в цепочке участвует и номер элемента.
BindingUtils — dynamic программинг, в enterprise стоит юзать в очень крайнем случае. MXMXL умеет хорошо делать тоже с плюс type check-инг, да и выглядит оно поприятнее.
Flex Data Binding Tricks