Che*_*ech 2 apache-flex mxml external textinput
我有一个带有表单的MXML,里面有两个TextInputs.我讨厌在MXML文件中包含任何代码(我来自JavaScript形式)所以我使用了
mx:Script source="external.as"
Run Code Online (Sandbox Code Playgroud)
标记以包含任何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;
}
Run Code Online (Sandbox Code Playgroud)
其中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;
Run Code Online (Sandbox Code Playgroud)
但我获得了1151:在命名空间内部定义XXXX存在冲突,这是完全有道理的.
有没有办法做到这一点,而不必将所有输入引用作为参数传递给函数?
您需要创建对TextInputs父容器的实例的引用,然后使用该引用来获取TextInputs及其属性.我想我们需要对你的文件结构做一些澄清.你是如何创建父容器的实例的?我想这就是你需要做的事情:
MyForm.mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:TextInput id="marketInput" />
<mx:TextInput id="segmentInput" />
<mx:TextInput id="priceLowInput" />
<mx:TextInput id="priceHighInput" />
</mx:VBox>
Run Code Online (Sandbox Code Playgroud)
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3583 次 |
最近记录: |