Cairngorm示例--業務邏輯如何管理視圖(III)
Posted on 2006-12-29 00:36 云自無心水自閑 閱讀(910) 評論(0) 編輯 收藏 所屬分類: Flex 、Cairngorm 、Flex2現在我們將增加驗證、格式化和一些其他的功能。
第四次迭代--添加功能
現在我們回過頭來看那個單視圖的應用,增加一點真實性,我們模擬一下遠程服務有一點延時。我們在Delegate中使用flash.utils.setTimeOut來模擬延時。
通常,當遠程服務在處理時,UI會展現一個進度條,禁用一部分控件,讓用戶明白不能再派發新的請求。在我們的例子中在遠程服務在處理的時候,我們會禁用“Get Quote”按鈕。完成這一點很容易,只需要在Model對象的StockQuote類中增加一個成員isPending,把它定義為一個bool形,這樣可以直接應用于綁定。
?


?
增加驗證
我們現在添加對股票報價的驗證功能,對于這一點,我們可以使用mx.validators.StringValidator來完成這一功能。應用中這兩個參數共同控制按鈕的有效性。這樣可以在Model對象中設置一個isValid屬性,用于組合這兩參數。






isSymbolValid是一個屬性,存放StringValidator的結果。
在StockMarketPod.mxml中添加mx:StringValidator這個Tag





從視圖中直接調用Model對象不符合MVC原則,因為視圖原則上只能派發事件。但在這個例子中,這樣已經足夠好了。
增加格式化
我們將股票報價以金額的方式進行展示,在StockMarketPod.mxml中增加一個formatter





現在看一下完整的StockQuote類



















































其中isPending屬性的值由GetStockQuoteCommand控制

































最后看一下StockMarketPod.mxml的全部代碼


















































此視圖中我們不需要使用ModelLocator,而是使用StockQuote作為參數傳入StockMarketPod.mxml
引用視圖的代碼















?
只傳遞需要的信息給視圖是一個比較好的做法,而盡量少使用ModelLocator這樣的全局變量,這樣也使用視圖重用性更高。