现在我们将增加验证、格式化和一些其他的功能。第四次迭代--添加功能现在我们回过头来看那个单视图的应用,增加一点真实性,我们模拟一下远程服务有一点延时。我们在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这样的全局变量,这样也使用视图重用性更高。
Powered by: BlogJava Copyright © 云自无心水自闲