![](/img/trans.png)
[英]How to include dojox.gfx.SVG and dojox.gfx.VML in a custom Dojo build with cross-browser support?
[英]How to define a custom property on a dojo gfx shape in a safe way?
我已經通過曲面創建了一個形狀對象。 現在,我希望將一些自定義狀態與其關聯。 我可以用最直接的方式做到這一點:
var rect = surface.createRect(...);
rect.myCustomData = ...;
並希望dojo或gfx的任何部分都沒有期望完全相同的屬性名稱的邏輯。
dojo中是否有一種方法可以安全地定義由它生成的對象的自定義數據?
聚苯乙烯
我可以使用GUID作為屬性名稱來定義一個屬性包。 但這很丑,不是嗎?
無法確保JavaScript的另一部分是否依賴於該屬性。 您始終可以嘗試在覆蓋之前驗證它是否存在,例如:
var rect = surface.createRect({
// Properties
});
if (rect.myCustomData === undefined) {
rect.myCustomData = myValue;
}
但是您仍然不確定100%,也許應用程序的某些部分依賴於該屬性不存在。 即使不是這種情況,您的財產仍然可以被覆蓋。
另一種方法是提供一個單獨的包含您的自定義數據的“地圖”,例如,通過類似以下操作:
var rect = surface.createRect({
// Properties
});
var myCustomData = [ ];
myCustomData.push({
shape: rect,
data: myValue
});
要檢索數據,您必須遍歷地圖,查看shape
屬性是否與您的形狀匹配,然后在data
屬性內檢索data
。
然后,您可以確定沒有其他框架會依賴它,但這意味着在創建,更新或刪除形狀時必須維護兩個單獨的部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.