意义。 。 。我见过将组件绑定到[Bindable] dataProvider的情况。当我更新dataProvider中的数据时,该组件不会立即反映更改。我需要做些什么来刷新数据吗?什么事件导致组件刷新其dataProvider数据?
答案 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属性必须调度一个事件。“