gpt4 book ai didi

apache-flex - 在 Flex 中,将字典用作数据提供者的最佳方式是什么?

转载 作者:行者123 更新时间:2023-12-04 23:32:13 26 4
gpt4 key购买 nike

通常在 Flex 中,您使用像 ArrayCollection 这样的集合作为组件的数据提供者。我经常将数据存储为字典,我希望将其值用作数据提供者。

你会如何建议这样做?

最佳答案

理想的解决方案是不使用字典,但这并不能回答您的问题......

因此,如果您被迫使用字典,解决此问题的一种方法是使用函数作为您的“中间人”。它可以在您的字典和关心它何时更改的 Flex 组件之间移动。

当然,对于大型字典,这可能效率低下,但在大多数情况下,性能应该是可以接受的。

首先,您需要一个将 Dictionary 转换为 ArrayCollection 的函数。以下工作示例之一就足够了:

从字典中提取键/值集合

    public function extractKeys(d:Dictionary):ArrayCollection {
var keyList:ArrayCollection = new ArrayCollection();
if(d != null) for(var key:* in d) keyList.addItem(key);
return keyList;
}

public function extractValues(d:Dictionary):ArrayCollection {
var valueList:ArrayCollection = new ArrayCollection();
if(d != null) for each(var value:* in d) valueList.addItem(value);
return valueList;
}

然后,您实际上可以绑定(bind)到这些函数本身!这样,只要底层字典被修改,任何依赖于这些函数的对象都会得到更新。例如:

使用函数绑定(bind)到字典值
    private var myDictionary:Dictionary; //initialized and used elsewhere

[Bindable(event="dictionaryValueChanged")]
public function extractValues(d:Dictionary):ArrayCollection {
var valueList:ArrayCollection = new ArrayCollection();
if(d != null) for each(var value:* in d) valueList.addItem(value);
return valueList;
}

public function updateDictionary(key:Object, value:Object):void {
myDictionary[key] = value;
dispatchEvent("dictionaryValueChanged");
}

从那里您可以使用 THE FUNCTION 作为您的数据提供者。如:
    <mx:DataGrid id="valueGrid" dataProvider="{extractValues()}" />

每当您的字典更改(通过 updateDictionary 函数)时,它最终都会触发 DataGrid 中的更新!

这实际上只是一个非常强大的技术在 flex 中的应用: binding to functions .一旦掌握了窍门,这种方法可以解决各种各样的问题。

我希望对某人有所帮助,

-g男性

编辑:

我不得不玩弄它,但我认为您也可以通过执行以下操作来消除“updateDictionary”功能,而不是:
    [Bindable(event="dictionaryValueChanged")]
private var myDictionary:Dictionary; //initialized and used elsewhere

[Bindable(event="dictionaryValueChanged")]
public function extractValues(d:Dictionary):ArrayCollection {
var valueList:ArrayCollection = new ArrayCollection();
if(d != null) for each(var value:* in d) valueList.addItem(value);
return valueList;
}

关于apache-flex - 在 Flex 中,将字典用作数据提供者的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3366466/

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