2011-07-15 50 views
0

我试图在Flex应用程序中使用视图/模型/视图模型或表示模型模式,因为它绝对让人感觉就像是“正确”的做事方式。我有一个关于如何应用Flex数据绑定的问题。使用视图模型模式的Flex数据绑定

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

在我的报告MXML我将标题标签绑定到summaryModel.title,但是title需要,所以如果该名称在方案还报告标题更新的另一部分改变以某种方式被绑定到projectModel.name

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

回答

1

比方说,你有这样的模式:

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

,你有你的表现模型:

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

    public var title:String; 
} 

在你的构造,可以将数据模型的二传手绑定到一个函数标题:

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”函数(而不是像我这样设置它),但需要传播更改通知。我做这件事并不难,但我发现这种方法要容易一些。

希望这会有所帮助!

0

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

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

相关问题