Apache flex Flex:dataProvider变量名为;“结果”;制造麻烦。为什么?

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

我有这个密码。问题是:如果我的dataProvider变量名为“result”,那么在正在运行的应用程序中,该列表只包含元素“[对象绑定]”。如果我为其他任何东西(例如“res”)重命名“result”,列表将按预期显示-“1”、“2”、“3”。为什么?

我只是在尝试Flex中的列表和数组。我试过这个。结果,它工作得很好。我想结果可能是保留的


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;
}