1

我有一个 Flex 3 应用程序,在视图堆栈中有一个视图,并且该视图只能在请求时创建。我已经为视图上的每个控件声明了验证器,并创建了一个名为 checkAllValid() 的方法,它运行 Validator.validateAll()。当我实际使用控件(使用 change 或 focusOut 事件)时,这非常有用,但是当视图首次显示给用户时,如何让 checkAllValid() 运行,以便它们立即显示一次无效的内容数据填充在控件中?

我尝试将调用放在视图本身的各种事件中(例如,creationComplete、updateComplete、show、activate 等),但是当我启动应用程序时它总是显示以下错误:

'指定属性属性时必须指定源属性。'

我还尝试将视图上的 creationPolicy 设置为“全部”,但这无济于事。

某些验证器仅在表单处于某种状态时才启用,但我通过注释掉我的所有验证器(除了这个最简单的验证器)来消除潜在问题:

<mx:Array id="validators"><mx:StringValidator id="val_Address1" source="{Address1}" property="text" required="true" triggerEvent=""/></mx:Array>

checkAllValid() 方法很简单,如下所示:

private function checkAllValid():void{              
        var validationErrors: Array = Validator.validateAll(validators);        
}

我也尝试过直接调用单个验证器而不是使用 validateAll,结果是一样的。

请帮忙!必须有一种方法可以强制视图在显示时进行验证....

(顺便说一句,它在 Cairngorm MVC 框架中,我将数据绑定到控件)

4

1 回答 1

0

知道了!我在另一个视图中添加了类似的验证器,它们运行良好。有什么区别?调用 checkAllValid() 的方法是在内部容器的 creationComplete 事件上调用的- 而不是主视图组件。

所以最后这与验证本身无关——只是我没有完全理解创建顺序。

我将把问题留在这里,以防有人遇到与创建顺序类似的问题。

于 2009-07-29T13:01:23.513 回答