Apache flex Flex:dataProvider变量名为;“结果”;制造麻烦。为什么?
我有这个密码。问题是:如果我的dataProvider变量名为“result”,那么在正在运行的应用程序中,该列表只包含元素“[对象绑定]”。如果我为其他任何东西(例如“res”)重命名“result”,列表将按预期显示-“1”、“2”、“3”。为什么?我只是在尝试Flex中的列表和数组。我试过这个。结果,它工作得很好。我想结果可能是保留的Apache flex Flex:dataProvider变量名为;“结果”;制造麻烦。为什么?,apache-flex,actionscript,adobe,Apache Flex,Actionscript,Adobe,我有这个密码。问题是:如果我的dataProvider变量名为“result”,那么在正在运行的应用程序中,该列表只包含元素“[对象绑定]”。如果我为其他任何东西(例如“res”)重命名“result”,列表将按预期显示-“1”、“2”、“3”。为什么?我只是在尝试Flex中的列表和数组。我试过这个。结果,它工作得很好。我想结果可能是保留的 Rob简短回答:这是FLEX中的一个BUG。我已经报告了。 这很奇怪。。。如果我们使用Spark列表控件,它甚至不会编译。它告诉我们它不能将数组转换为ILi
Rob简短回答:这是FLEX中的一个BUG。我已经报告了。 这很奇怪。。。如果我们使用Spark列表控件,它甚至不会编译。它告诉我们它不能将
数组
转换为IList
<代码>结果显然是某个地方的变量,但在哪里
因此,我研究了使用-keep-generated-actionscript=true编译器标志生成的代码
在ViewName-generate.as文件中,您会发现一个有趣的方法:
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
private var result : ArrayCollection = new ArrayCollection([1,2,3]);
]]>
</mx:Script>
<mx:List dataProvider="{result}"/>
</mx:Application>
这就是绑定对象在result
变量中的作用
我们可以在binding对象中看到,有一个函数返回(result)
。在任何其他情况下,这都是类似于(results)
。但是,在本例中,它将返回绑定
对象的本地数组。这就是为什么这个结果有效的原因。它正在退出本地范围
所以,这显然是一个bug。我已将其提交给Adobe:是。如果“结果”以外的任何内容有效,则必须是保留关键字。换个名字就行了
private function _ViewName_bindingsSetup():Array
{
var result:Array = [];
result[0] = new mx.binding.Binding(this,
function():Object
{
return (result);
},
null,
"_ViewName_List1.dataProvider"
);
return result;
}