当前位置:  开发笔记 > 编程语言 > 正文

从外部AS访问MXML中定义的元素

如何解决《从外部AS访问MXML中定义的元素》经验,为你挑选了1个好方法。

我有一个带有表单的MXML,里面有两个TextInputs.我讨厌在MXML文件中包含任何代码(我来自JavaScript形式)所以我使用了

mx:Script source="external.as"

标记以包含任何MXML文件中使用的任何代码.问题是如果我在external.as文件上有这个代码:

private function populateFromForm():void{
   var vo:ValidObject= new ValidObject();
   vo.market = marketInput.text;
   vo.segment = segmentInput.text;
   vo.priceLow = priceLowInput.text;
   vo.priceHigh = priceHighInput.text;
}

其中marketInput,segmentInput,priceLowInput和priceHighInput是MXML文件中定义的TextInputs.当我尝试complile时,我得到一个1120:访问未定义的属性XXXXX

我尝试在函数之前添加这些行:

public var marketInput:TextInput;
public var segmentInput:TextInput;
public var priceLowInput:TextInput;
public var priceHighInput:TextInput;

但我获得了1151:在命名空间内部定义XXXX存在冲突,这是完全有道理的.

有没有办法做到这一点,而不必将所有输入引用作为参数传递给函数?



1> Eric Belair..:

您需要创建对TextInputs父容器的实例的引用,然后使用该引用来获取TextInputs及其属性.我想我们需要对你的文件结构做一些澄清.你是如何创建父容器的实例的?我想这就是你需要做的事情:

MyForm.mxml:



    
    
    
    

SaveVOContainer.as:

package
{
    public class SaveVoContainer extends Container
    {
        private var myForm:MyForm = new MyForm();

        public function SaveVOContainer
        {
            this.addChild(myForm);
        }

        private function populateFromForm():void{
           var vo:ValidObject= new ValidObject();
           vo.market = myForm.marketInput.text;
           vo.segment = myForm.segmentInput.text;
           vo.priceLow = myForm.priceLowInput.text;
           vo.priceHigh = myForm.priceHighInput.text;
        }
    }
}

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有