2016-07-15 9 views
0

アイコンを含むドラッグ可能なボックスで構成されるポリマーを使用してカスタム要素を設定しようとしています。要素上にicon属性を指定してアイコンを定義できるように、要素上に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); 
は、私はそのようにように(それに関連付けられたHTMLファイルを経由して私の新しい要素をインポートした後)、別のjavascript関数で setAttributeを使用して、私のアイコンの属性を設定しようとしている:

var newElement = document.createElement("my-element"); 
newElement.setAttribute("icon", "some/icon/path.png"); 

理想的には、これを新しいパスを引数としてオブザーバー関数を起動し、新しい要素の画像のURLをそのパスが何であっても設定します。代わりに、Chromeでエラーが表示されます:

Uncaught TypeError: Cannot set property 'icon' of undefined 

なぜこのエラーが発生していますか?修正するにはどうすればよいですか。デバッグの

注:

私は、ポリマーコードに掘られ、エラーがこのラインに由来することを発見しました:

var model = this._clientsReadied ? this : this._config; 

両方this._clientsReadiedthis._configは未定義で、このエラーの原因となっていますメソッド。nameが属性としてmodelに設定されています。しかし、私はこれらの属性がなぜ定義されないのか知るためにポリマーについて十分に知りません。

+0

'elementRef.set(' property '、' value ') 'のようなポリマーの' set'メソッドを使ってみましたか? – Alan

+0

@Alan私は 'element.setAttribute'、' element.set'、 'Polymer.dom(element).set'(未定義)、' Polymer.dom(element).setAttribute'を試しました。 – ckersch

+1

ご存じのように、私はあなたのコードで[fiddle](https://jsfiddle.net/375chjk2/)を作ろうとしましたが、うまくいきます。 – Alan

答えて

1

Why am I getting this error, and what can I do to fix it?

あなたがcreateElement()を起動するときに、あなたのカスタム要素がまだ登録されていないため、このエラーを取得しています。恐らく、2つのファイルが間違った順序で解析されているからです。

この問題を解決するには、インポートされたファイルの順序を変更するか、HTMLImportsLoadedまたはWebComponentsReadyイベントを待つことができます。

document.addEventListener("HTMLImportsLoaded", function() 
{ 
    var newElement = document.createElement("my-element"); 
    newElement.setAttribute("icon", "some/icon/path.png"); 
}); 
関連する問題