【问题标题】:ActionScript 3.0 - reading each MXML elementActionScript 3.0 - 读取每个 MXML 元素
【发布时间】:2013-03-12 16:37:46
【问题描述】:

如果已经有这方面的帖子,很抱歉,我找不到。

我有以下表格(样本):

<mx:Label x="105.5" y="0" text="Cadastramento Basico" fontSize="22"/>
<mx:Text x="140" y="42" text="Nome:"/>
<mx:TextInput x="176" y="40" id="nome"/>
<mx:Text x="138" y="74" text="E-mail:"/>
<mx:TextInput x="177" y="72" id="email"/>
<mx:Text x="125" y="105" text="Telefone:"/>
<mx:TextInput x="177" y="103" restrict="012456789" id="telefone"/>

在用户单击提交按钮后,我需要阅读 ActionScript 中的每个元素以清理每个元素。在 jQuery 中我们有函数elements.each(),我只需要这样的东西。

请问我该怎么做?

【问题讨论】:

  • 将这些字段的值绑定到数据模型然后迭代该模型的属性以重置它们将是一种更简洁的方法。您应该避免直接与视图组件交互。

标签: actionscript-3 apache-flex mxml


【解决方案1】:
  1. 提问前请确保您read the documentation

  2. 你应该把你的表单包装成一个&lt;mx:Form&gt;标签:

    <mx:Form id="myForm" label="Cadastramento Basico">
        <mx:FormItem label="Nome:" >
            <<mx:TextInput id="nome"/>
        </mx:FormItem>
        <mx:FormItem label="E-mail:" >
            <<mx:TextInput id="mail"/>
        </mx:FormItem>            
        <mx:FormItem label="Telefone:" >
            <<mx:TextInput id="telefone" restrict="012456789"/>
        </mx:FormItem>
    </mx:Form>
    
  3. 然后通过运行表单的所有项目手动执行此操作,并检查它们是否具有正确的类型和要重置的有效属性(如有必要,将它们添加到下面的代码中)。

    private function clearForm():void
    {
         for each(var o:* in loginForm.getChildren() ){
             if(o is FormItem){
                 var item:FormItem = o as FormItem;
                 for each(var o2:Object in item.getChildren()){
                     if(o2.hasOwnProperty("text")) {
                         o2.text = "";
                     }
                 }
              }
         }
    }
    

【讨论】:

  • -1。尽管这是一种有效的方法;表单是布局容器;为了处理 UI 元素,不需要或不需要使用它。我更喜欢@riastar 推荐的方法。
  • @www.Flextras.com 使用表单容器可以轻松地布置项目。但确实,第三点并不是最快的方法。更改模型会快得多。 +1
猜你喜欢
  • 1970-01-01
  • 2011-03-29
  • 2011-06-05
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 2014-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多