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





это будет зависеть от того, что вы сделали с данными. вы применили фильтр, если да, то вам нужно обновить данные. вы сделали сортировку, если да, вам нужно обновить данные. Является ли ваш dataProvider массивом, если это не связано с привязкой, используйте ArrayCollection.
Приведите нам пример того, что не обновляется, и мы сможем оказать конкретную помощь.
Если вам нравится возиться с компилятором командной строки, вы можете использовать флаг compile.keep-generated-actionscript, чтобы увидеть эффект добавления [Bindable] к свойству. Создайте простой класс ActionScript с именем test и добавьте к нему одно связываемое строковое свойство, а затем скомпилируйте его следующим образом:
mxmlc -compiler.keep-generated-actionscript test.as
Это создаст папку с именем «сгенерированный», содержащую все дополнительные сценарии действий, которые в данном случае будут одним файлом с именем (вероятно) «_test-binding-generated.as».
Из этого вы должны увидеть, что добавление связываемого тега просто создает оболочку, которая реализует IEventDispatcher и отправляет событие при вызове установщика. Именно эту оболочку будет слушать ваш компонент.
Если ваш компонент не сразу отражает изменение в своем отображении, это может означать, что вам придется изучить код перерисовки этого компонента. Элемент управления Tree известен из-за такого рода проблем, в основном потому, что обновление может быть дорогостоящим.
«Когда свойство является источником выражения привязки данных, Flex автоматически копирует значение исходного свойства в любое целевое свойство при изменении исходного свойства. Чтобы сигнализировать Flex о выполнении копирования, необходимо использовать тег метаданных [Bindable] чтобы зарегистрировать свойство в Flex, а исходное свойство должно отправлять событие ".
Это, вероятно, перебор, но если вам действительно интересно, что происходит внутри, когда вы добавляете тег [Bindable], я настоятельно рекомендую проверить сеанс Погружение в воды, связывающие данные Майкла Лабриолы из 360 | Flex! San Jose. Это, безусловно, самая глубокая презентация по этой теме, которую вы найдете.
Для просмотра вам необходимо загрузить Adobe Media Player (который работает в Adobe Air). Если у вас есть проблемы с подпиской на сеансы 360 | Flex в Adobe Media Player, следуйте совету Теда Патрика из его сообщения в блоге Ссылка удалена.
Его презентация также есть на Slideshare, но далеко не настолько информативной или развлекательной.
Текущие ссылки кажутся мертвыми / 404. Есть идеи, где я могу найти копию этого видео?
Ссылка Исключено из ответа, как его открыть веб-сайт порно.
Глава 7 руководства разработчика посвящена именно этому. Предлагаю вам прочитать.
Отрывок:
Although raw data objects, such as an Array of strings or objects, are wrapped in collections when you use them as the value of a dataProvider property, using collections explicitly is a better practice. Using collections explicitly ensures data synchronization and provides both simpler and more sophisticated data access and manipulation tools than are available when you are using raw objects directly as data providers. Collections can also provide a consistent interface for accessing and managing data of different types.
См. Также это о привязке данных и массивах
Adobe переработала свой раздел Adobe TV, поэтому, если вы хотите избежать лишних хлопот при установке Adobe Media Player, просто перейдите по этой ссылке в разделе <a href = "tv.adobe.com/watch/360flex-conference/… TV</a>. Намного проще: )