Что делает тег Flex [Bindable]? - PullRequest
6 голосов
/ 12 января 2009

Значение. , , Я видел случаи, когда я связывал компоненты с [Bindable] dataProvider. Когда я обновил данные в dataProvider, компонент не отражает изменение немедленно. Нужно ли что-то делать, чтобы обновить данные? Какое событие заставляет компонент обновлять свои данные dataProvider?

Ответы [ 5 ]

11 голосов
/ 13 января 2009

Это, вероятно, излишне, но если вы действительно заинтересованы в том, что происходит внутри, когда вы добавляете тег [Bindable], я настоятельно рекомендую проверить сессию Майкла Лабриолы Diving in the Data Binding Waters 360 | Flex! Сан-Хосе. Это, безусловно, самая глубокая презентация на эту тему, которую вы найдете.

Для его просмотра вам необходимо загрузить Adobe Media Player (работает на Adobe Air). Если у вас возникли проблемы с подпиской на сеансы 360 | Flex в Adobe Media Player, следуйте советам Теда Патрика из его сообщения в блоге .

Его презентация также размещена на Slideshare , но это далеко не так информативно или занимательно.

3 голосов
/ 14 января 2009

Глава 7 руководства разработчика посвящена именно этому. Я предлагаю вам прочитать это.

Выдержка:

Хотя необработанные объекты данных, такие как Массив строк или объектов, завернутые в коллекции при использовании их как значение dataProvider свойство, используя коллекции явно это лучшая практика. С помощью коллекции явно обеспечивает данные синхронизация и обеспечивает как более простые и сложные данные инструменты доступа и манипуляции, чем доступно, когда вы используете сырье объекты непосредственно как поставщики данных. Коллекции также могут предоставить последовательный интерфейс для доступа и управление данными разных типов.

См. Также это о привязке данных и массивах

2 голосов
/ 12 января 2009

это будет зависеть от того, что вы сделали с данными. Вы применили фильтр, если это так, вам нужно обновить данные. Вы делали сортировку, если это так, вам нужно обновить данные. Является ли ваш dataProvider массивом, если это не связано, используйте ArrayCollection.

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

1 голос
/ 12 января 2009

"Когда свойство является источником выражения привязки данных, Flex автоматически копирует значение свойства источника в любое свойство назначения при изменении свойства источника. Чтобы сообщить Flex о выполнении копирования, необходимо использовать [Bindable ] тег метаданных для регистрации свойства во Flex, а свойство источника должно отправлять событие. "

1 голос
/ 12 января 2009

Если вы возитесь с компилятором командной строки, вы можете использовать флаг compile.keep-generated-actionscript, чтобы увидеть эффект добавления [Bindable] к свойству. Создайте простой класс actionscript, который называется test, и добавьте к нему одно свойство привязываемой строки, а затем скомпилируйте его следующим образом:

mxmlc -compiler.keep-generated-actionscript test.as

Это создаст папку с именем «сгенерированный», содержащую все дополнительные сценарии действий, которые в этом случае будут представлять собой один файл с именем (вероятно) «_test-binding-generated.as».

Из этого вы должны увидеть, что добавление привязываемого тега просто создает оболочку, которая реализует IEventDispatcher и отправляет событие при вызове метода установки. Именно эта оболочка будет прослушиваться вашим компонентом.

Если ваш компонент не сразу отражает изменение в его отображении, это может означать, что вам придется изучить код перерисовки этого компонента. Элемент управления Tree довольно известен своими проблемами, в основном потому, что обновление может быть дорогостоящим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...