0

我有一个名为 Student 的类,它具有多个属性以及属性"isSelected:Boolean",并且该类被定义为 Bindable。

[Bindable]
[RemoteClass(alias="portal::Student")]
public class Student

在一个 mxml 应用程序中,我有一个数据网格,其中它的数据提供者已设置为学生的 ArrayCollection。我有一列用于数据网格的复选框以及一个应该选择所有学生的 headerItemRenderer 复选框(应该选择或取消选择行中的所有复选框)。

我已经为标题中复选框的单击事件定义了一个处理程序,它将 dataProvider 中每个 Student 对象的 isSelected 属性设置为 false 或 true。但是单击标题中的此复选框时,我收到警告:无法绑定到“学生”类的属性“isSelected”,因此行中的复选框不会更新。

我不明白为什么绑定在这里不起作用,也不知道如何解决这个问题。任何帮助是极大的赞赏。

4

3 回答 3

0

让您的 actionscript 类扩展 EventDispatcher(绑定基于事件调度)。

于 2012-05-24T10:00:02.083 回答
0

这取决于,我猜你在代码中的某个地方引用了你想要绑定的学生实例。该引用也必须声明为 [Bindable],以使绑定链正常工作。

此外,当您不依赖 ActionScript 来使绑定工作时,您不必扩展 EventDispatcher,因为 MXML 将为您生成该代码(关于 Cosma 的评论)。

你定义一个内联渲染器吗?在我看来,这不是最佳选择,因为生成了一个组件并且调试变得模糊,因为您可能会遇到范围问题。我建议实现一个新组件,实现 IDataRenderer 并通过生命周期将数据传播给孩子,或者在 MXML 中实现该组件。为什么选择 IDataRenderer?这个接口是必须的。

另外,我不确定那个,但不应该是

    [Bindable]
    [RemoteClass(alias="portal.Student")]
    public class Student {}

?

于 2012-05-24T15:19:02.543 回答
0

您需要确保您的 ItemRenderer 将传入数据保存在标记为 [Bindable] 的属性中。你会想要传递整个学生,而不仅仅是“isSelected”......

于 2012-05-24T17:29:04.870 回答