我試圖設置一個使用聚合物的自定義元素,它包含一個可拖動的框和一個圖標。希望能夠通過指定元件上的icon
屬性來定義該圖標,這樣我可以聲明式創建元素而不是元件,這將僅是通過JavaScript訪問上定義setIcon
方法。在元素上設置屬性給出錯誤「無法設置屬性'...'未定義'與聚合物
我已經試過通過在元素原型中包含properties
屬性來設置我的元素以處理該屬性,從而爲我提供元素代碼,如下所示:
var elementProto = {
is : "my-element",
behaviors : [someOtherProto],
properties : {
icon : {
"type" : "String",
"observer" : "_iconObserver",
}
},
_iconObserver : function(){ /* Functionality for adding icon */}
};
elementProto.otherMethods = various functions;
Polymer(elementProto);
在另一個文件中,我再嘗試設置使用setAttribute
我的圖標屬性,另一個JavaScript函數,(通過其關聯的HTML文件導入我的新元素後),像這樣:
var newElement = document.createElement("my-element");
newElement.setAttribute("icon", "some/icon/path.png");
理想情況下,將以新路徑作爲參數激發我的觀察者函數,並且將我的新元素中的圖像的URL設置爲任何路徑。相反,鉻給我這個錯誤:
Uncaught TypeError: Cannot set property 'icon' of undefined
爲什麼我得到這個錯誤,我能做些什麼來解決它?調試
注:
我挖成聚合物代碼,發現誤差從該線來源:
var model = this._clientsReadied ? this : this._config;
兩個this._clientsReadied
和this._config
未定義,其在導致該錯誤._setAttributeToProperty(model, name);
方法,其中name
設置爲model
上的屬性。不過,我對聚合物知之甚少,不知道爲什麼這些屬性不確定。
您是否嘗試過使用像'elementRef.set('property','value')'這樣的聚合物'set'方法? – Alan
@Alan我試過'element.setAttribute','element.set','Polymer.dom(element).set'(這是未定義的)和'Polymer.dom(element).setAttribute'。 – ckersch
你知道,我試着用你的代碼製作一個[小提琴](https://jsfiddle.net/375chjk2/),它工作得很好......也許你有一些缺少的進口? – Alan