2011-07-15 43 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

與其他任何綁定沒有什麼不同,它們都將被更新(兩者都是放置標題和摘要模型的地方)。

如果您發佈您如何定義您的值,我可以幫助您的語法,但這不是一個困難的綁定操作。如果事情變得稍微複雜一點,那就是雙向約束。

相關問題