gpt4 book ai didi

apache-flex - Flex : dataProvider variable named "result" makes trouble. 为什么?

转载 作者:行者123 更新时间:2023-12-02 08:55:57 25 4
gpt4 key购买 nike

<?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>

我有这个代码。问题是:如果我的 dataProvider 变量被命名为“result”,那么在运行的应用程序中,List 包含唯一的元素“[object Binding]”。如果我将“结果”重命名为其他任何内容(例如“res”),列表将按预期显示 - “1”、“2”、“3”。为什么?

最佳答案

简短回答:这是 FLEX 中的一个错误。我已经举报了。

这很奇怪...如果我们使用 Spark List 控件,它甚至不会编译。它告诉我们它不能将 Array 转换为 IListresult 显然是某个地方的变量,但是在哪里呢?

所以我查看了使用 -keep-generated-actionscript=true 编译器标志生成的代码。

在ViewName-generate.as文件里面,你会发现一个有趣的方法:

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

这是 Binding 对象进入您的 result 变量的地方。

我们可以在绑定(bind)对象中看到有一个返回(result)的函数。在任何其他情况下,这将是类似 (results) 的其他内容。但是,在这种情况下,它返回 Binding 对象的本地数组。这就是 this.result 起作用的原因。它正在退出本地范围!

所以,这显然是一个错误。我已将其提交给 Adob​​e:https://bugs.adobe.com/jira/browse/FB-29870

关于apache-flex - Flex : dataProvider variable named "result" makes trouble. 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4877345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com