Flex [Bindable]标签有什么作用?

时间:2009-01-12 14:14:39

标签: flex

意义。 。 。我见过将组件绑定到[Bindable] dataProvider的情况。当我更新dataProvider中的数据时,该组件不会立即反映更改。我需要做些什么来刷新数据吗?什么事件导致组件刷新其dataProvider数据?

5 个答案:

答案 0 :(得分:11)

这可能有些过分,但如果您真的对添加[Bindable]标签时发生的事情感兴趣,我强烈建议您查看Michael Labriola的 Diving in the Data Binding Waters 会话来自360 | Flex!圣何塞。到目前为止,您将找到关于此主题的最深入的演讲。

要查看它,您需要下载Adobe Media Player(在Adobe Air上运行)。如果您在Adobe Media Player中订阅360 | Flex会话时遇到问题,请按照his blog post中的Ted Patrick的建议。

他的发言也在Slideshare,但它没有提供信息或娱乐性。

答案 1 :(得分:3)

开发人员指南的第7章完全与此有关。我建议你看看。

摘录:

  

虽然是原始数据对象,例如   字符串或对象的数组是   在使用时包装在集合中   它们作为dataProvider的值   属性,显式使用集合   是一种更好的做法。运用   集合明确地确保数据   同步并提供两者   更简单,更复杂的数据   访问和操作工具比   当你使用raw时可用   对象直接作为数据提供者。   收藏品还可以提供   访问和访问的一致接口   管理不同类型的数据。

另见this关于数据绑定和数组

答案 2 :(得分:2)

这将取决于您对数据所做的操作。 你应用过滤器,如果是这样你需要刷新数据。 你做了一个排序,如果是这样你需要刷新数据。 您的dataProvider是否为Array,如果不这样做,则不使用ArrayCollection。

给我们举例说明不更新的内容,我们应该能够提供具体的帮助。

答案 3 :(得分:1)

如果您正在摆弄命令行编译器,可以使用compile.keep-generated-actionscript标志来查看向属性添加[Bindable]的效果。创建一个名为test的简单actionscript类,并为其添加一个可绑定的字符串属性,然后像这样编译它:

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

这将创建一个名为“generated”的文件夹,其中包含所有额外的动作脚本,在这种情况下,它将是一个名为(可能)“_test-binding-generated.as”的单个文件。

您应该能够从中看到,添加可绑定标记只会创建一个包装器,它实现IEventDispatcher并在调用setter时调度事件。这是您的组件将要监听的包装器。

如果您的组件没有立即反映其显示的变化,这可能意味着您将不得不查看该组件的重绘代码。 Tree控件因这类问题而臭名昭着,主要是因为更新可能很昂贵。

答案 4 :(得分:1)

“当属性是数据绑定表达式的源时,Flex会在源属性更改时自动将source属性的值复制到任何目标属性。要向Flex发出信号以执行复制,必须使用[Bindable]使用Flex注册属性的元数据标记,source属性必须调度一个事件。“