2011-08-23 112 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

相關問題