将dataProvider分配给Flex的PopUpMenuButton时看似不一致的行为

时间:2016-07-22 01:06:20

标签: arrays actionscript-3 flex associative-array flex-mx

我试图让两个不同的测试下拉列表以相同的方式工作。

<mx:HBox x="10" y="50" >
    <mx:PopUpMenuButton id="associativeDD"/>
</mx:HBox>
<mx:HBox x="100" y="50" >
    <mx:PopUpMenuButton id="indexedDD"/>
</mx:HBox>

当我使用actionscript分配dataProvider值时,我似乎得到两个不同的结果,这取决于我是使用关联数组还是索引数组。

var arr1:Array = new Array();
arr1['1'] = ({label: "test1"});
arr1['2'] = ({label: "test2"});
arr1['3'] = ({label: "test3"});
associativeDD.dataProvider = arr1;

var arr2:Array = new Array();
 arr2.push({label: "test1"});
 arr2.push({label: "test2"});
 arr2.push({label: "test3"});
indexedDD.dataProvider = arr2;

这是它的样子:

flex dropdowns

在我使用关联数组分配dataProvider的那个开头有一个空白点,有没有办法做到这一点&#34;正确&#34;所以它看起来像索引的一样吗?

1 个答案:

答案 0 :(得分:0)

Actionscript数组是从零开始的,稀疏的。这意味着,如果您创建一个数组并插入索引为# Spring Framework Standard Properties spring: batch: job.enabled: true 的第一个元素,则该数组的大小为 beforeEach(injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { return tcb .overrideProviders(EditUserAdmin, [ provide(EditUserService, { useClass: EditUserMock }), provide(APIServiceConstants, { useClass: APIServiceConstants }), provide(RouteParams, { useValue: new RouteParams({ UserId: "48288" }) }), provide(Router, { useClass: MockRouter }) ]) .createAsync(EditUserAdmin) .then((f) => { f.detectChanges(); app = f.componentInstance; fixture = f; }); })); ,而索引为1的元素将为{{1} }。

因此,要获得相同的结果,您需要在关联数组的情况下从索引2开始。