2011-08-23 111 views
0

有什么方法可以将自定义数据附加到元素上?有点像jQuery中的$ .data()函数? 我知道你可以创建子类和元素并添加自定义参数,但是创建自定义类仅仅是为了添加一个自定义参数就太过于夸张了。如何将自定义数据附加到元素?

回答

3

如果我明白你的问题....

您可以使用语法像这样在运行时创建任何给定对象的新属性:

myObject['newProperty'] = 'somevalue'; 

我不知道我会推荐它在大多数情况下。

+0

谢谢,这就是我要找的。你为什么不推荐它? – John

+2

不推荐这么做,因为1)动态类的性能访问时间较慢2)您使用的魔法字符串在使用常量时容易产生错误错误3)您正在拧紧必须维护的下一个人你的代码,因为你没有去强类型。如果他们有一个myObject的实例,IDE将无法自动完成它看不到的内容。 –

+0

@John因为它违背了使用强类型的目的,并且针对强类型绕过各种编译器检查,导致运行时错误的更大潜力。如果你需要一个“关联数组/字典”是一回事。但;为避免创建自定义类,我不会添加额外的属性给任何给定的对象。 – JeffryHouser

1

我不完全确定我理解你的问题,但会让你的元素dynamic class满足你的要求?

+0

我必须为此+1。我也不知道原来的海报是什么;但这听起来确实如此。 – JeffryHouser

1

在Flex的ItemRenderer类(或DataRenderer)具有data属性时,它通过与一个Flex控制实例化填充一个dataProvider(如ListDataGrid)。

1

如果你的元素是不是动态的,你可以创建字典和使用元素作为重点把任何物体与属性有:

var extraInfo:Dictionary = new Dictionary(); 
extraInfo[element1] = { tag : "Quick & dirty" }; 
// or 
extraInfo[element2] = new ElementProperties("More solid approach"); 
+0

是的,这也是一个不错的解决方案。谢谢! – John

+0

为了完整;你可以使用这种方法与任何对象;你不需要使用字典。 – JeffryHouser

相关问题