我正试图在Flex应用程序中使用View / Model / View-Model或Presentation Model模式,因为它确实感觉就像是“正确”的做事方式。我有一个关于如何使用Flex数据绑定的问题。
假设我有一个Project
模型类,其中包含一个可绑定的名称字段。我想制作一份报告来显示有关该项目的信息。报告的标题应为 [项目名称] 摘要。我想创建一个View-Model类来为报告提供支持。此SummaryViewModel
课程将有一个title
字段来提供报告标题。
在我的报告mxml中,我将标题标签绑定到summaryModel.title
,但是title
需要以某种方式绑定到projectModel.name
,所以如果在程序的另一部分更改了名称,报告标题更新。
在Flex中实现这种“两级”数据绑定的正确方法是什么?我应该以不同的方式做事吗?
答案 0 :(得分: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
,当projectModel.name
更改时,所有内容都会链接到用户界面。
你可以变得更复杂并在title
上使用“getter”函数(而不是像我在这里那样设置它),但是你需要传播更改通知。我并不是非常难以做到,但我发现这种方法更容易理解。
希望这有帮助!
答案 1 :(得分:0)
与任何其他绑定没有什么不同,它们都会被更新(两者都是您放置标题和摘要模型的地方)。
如果您发布定义值的方式,我可以帮助您使用语法,但这不是一个困难的绑定操作。事情稍微复杂一点就是双向约束。