0

我有一个带有这个标签的 mxml 页面:

<fx:Declarations>
        <mx:StringValidator id = "validator"
                            source = "{myTextInput}"
                            property = "text"
                            required = "true"
                            maxLength = "128"/>
<fx:Declarations>

我想在另一个页面中做同样的事情,但是使用动作脚本动态地构建和添加验证器。我有这个代码来构建验证器:

var lengthTextValidator:StringValidator  = new StringValidator();
lengthTextValidator.source = fieldTextInput;
lengthTextValidator.property = "text";
lengthTextValidator.required = true;

如何完成工作并将验证器添加到页面?谢谢!

4

1 回答 1

2

要将 UIComponent 添加为另一个 UIComponent 的子组件,您可以使用 addChild():

myComponent.addChild(myOtherUIComponent);

但是,验证器不是 UIComponent 或 DisplayObject。它不会作为子项添加到页面中。如果您只是用fx:Declaration执行相同操作的 ActionScript 片段替换 MXML 文件片段,那么您不需要做更多的事情。

我会将 lengthTextValidator 设为组件上的公共或受保护的实例变量:

public var lengthTextValidator:StringValidator  = new StringValidator();

这意味着该变量将在组件中使用。没有 public 或 private 的原始语法将生成一个方法特定的变量,当方法执行完成时将无法访问该变量,或者将变量放在内部命名空间中。

您的其余代码必须放在一个方法中。对于 ActionScript 类;你可以把它放在构造函数中。或者对于 MXML 类,您可以将其放入 initialize 或 creationComplete 事件处理程序中。

lengthTextValidator.source = fieldTextInput;
lengthTextValidator.property = "text";
lengthTextValidator.required = true;

如果您将验证器代码放在单独的类中;那么您必须导入该类并创建它的一个实例:

import myPackage.MyClass;
public var myClass :MyClass = new MyClass();

然后您可以通过访问组件上的公共变量来访问验证器:

myClass.lengthTextValidator;

最后; 如果您只想将该片段移动到不是类的 ActionScript 文件中;您可以在 fx:Script 块中使用 include 指令:

<fx:Script><[[
 include "myASFile.as"
]]></fx:Script>

最后一种方法是非正统的,通常不推荐。

于 2013-05-05T13:16:38.543 回答