0

我正在尝试在 Flex 应用程序中使用 View/Model/View-Model 或 Presentation Model 模式,因为这绝对是一种“正确”的做事方式。不过,我有一个关于 Flex 数据绑定应该如何工作的问题。

假设我有一个Project包含可绑定名称字段的模型类。我想制作一份报告以显示有关该项目的信息。报告的标题应为[项目名称]摘要。我想创建一个 View-Model 类来为报告提供支持。此类SummaryViewModel将有一个title字段来提供报告标题。

在我的报告 mxml 中,我会将标题标签绑定到summaryModel.title,但是title需要以某种方式绑定到,projectModel.name因此如果在程序的另一部分更改名称,报告标题也会更新。

在 Flex 中完成这种“两级”数据绑定的正确方法是什么?我应该以不同的方式做事吗?

4

2 回答 2

1

假设您有这样的模型:

[Bindable]
public class Project {
    public var name:String;
}

你有你的演示模型:

[Bindable]
public class SummaryPresentationModel
{
    private var projectModel:Project = new Project();

    public var title:String;
}

在您的构造函数中,您可以将模型的 setter 数据绑定到设置标题的函数:

    public function SummaryPresentationModel() {
        BindingUtils.bindSetter(modelNameChanged, projectModel, "name");
    }

然后设置的值title

    private function modelNameChanged(newValue:String):void {
        title = "[" + projectModel.name + "] Summary";
    }

然后,您可以自由地绑定到summaryPM.title并且在更改时所有内容都将链接到 UI projectModel.name

您可以变得更复杂并使用“getter”函数title(而不是像我在这里那样设置它),但您需要传播更改通知。我不是很难做到,但我发现这种方法更容易遵循。

希望这可以帮助!

于 2011-07-16T22:26:21.937 回答
0

与任何其他绑定没有什么不同,它们都将被更新(都是您放置标题和摘要模型的地方)。

如果您发布如何定义您的值,我可以帮助您使用语法,但这不是一个困难的绑定操作。事情变得稍微复杂的地方是双向绑定。

于 2011-07-16T06:39:13.887 回答