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


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






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





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





現(xiàn)在看一下完整的StockQuote類



















































其中isPending屬性的值由GetStockQuoteCommand控制

































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


















































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















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