現(xiàn)在我們將增加驗(yàn)證、格式化和一些其他的功能。第四次迭代--添加功能現(xiàn)在我們回過頭來看那個(gè)單視圖的應(yīng)用,增加一點(diǎn)真實(shí)性,我們模擬一下遠(yuǎn)程服務(wù)有一點(diǎn)延時(shí)。我們?cè)贒elegate中使用flash.utils.setTimeOut來模擬延時(shí)。通常,當(dāng)遠(yuǎn)程服務(wù)在處理時(shí),UI會(huì)展現(xiàn)一個(gè)進(jìn)度條,禁用一部分控件,讓用戶明白不能再派發(fā)新的請(qǐng)求。在我們的例子中在遠(yuǎn)程服務(wù)在處理的時(shí)候,我們會(huì)禁用“Get Quote”按鈕。完成這一點(diǎn)很容易,只需要在Model對(duì)象的StockQuote類中增加一個(gè)成員isPending,把它定義為一個(gè)bool形,這樣可以直接應(yīng)用于綁定。
?
增加驗(yàn)證我們現(xiàn)在添加對(duì)股票報(bào)價(jià)的驗(yàn)證功能,對(duì)于這一點(diǎn),我們可以使用mx.validators.StringValidator來完成這一功能。應(yīng)用中這兩個(gè)參數(shù)共同控制按鈕的有效性。這樣可以在Model對(duì)象中設(shè)置一個(gè)isValid屬性,用于組合這兩參數(shù)。
isSymbolValid是一個(gè)屬性,存放StringValidator的結(jié)果。在StockMarketPod.mxml中添加mx:StringValidator這個(gè)Tag
從視圖中直接調(diào)用Model對(duì)象不符合MVC原則,因?yàn)橐晥D原則上只能派發(fā)事件。但在這個(gè)例子中,這樣已經(jīng)足夠好了。
增加格式化我們將股票報(bào)價(jià)以金額的方式進(jìn)行展示,在StockMarketPod.mxml中增加一個(gè)formatter
現(xiàn)在看一下完整的StockQuote類
其中isPending屬性的值由GetStockQuoteCommand控制
最后看一下StockMarketPod.mxml的全部代碼
此視圖中我們不需要使用ModelLocator,而是使用StockQuote作為參數(shù)傳入StockMarketPod.mxml引用視圖的代碼
只傳遞需要的信息給視圖是一個(gè)比較好的做法,而盡量少使用ModelLocator這樣的全局變量,這樣也使用視圖重用性更高。
Powered by: BlogJava Copyright © 云自無心水自閑