2017-02-19 12 views
1

私はこのようなiron-listを使用してdiv要素のリストを作成します。鉄 - リスト内の要素からデータ属性を読み取る

<iron-list items="[[chats]]" as="item" style="height:500px;"> 
    <template> 
     <div class="item title" data-recipient$="[[item.recipient]]"> 
      <iron-icon class="big" src="../icons/games.svg"></iron-icon> 
     </div> 
    </template> 
</iron-list> 

私は後でオンと呼ばれ、div.titleをループされるポリマーのメソッドを持っています。

私は、彼らの色を設定するために管理することができますが、私は、データ属性を読み出すために管理することはできません。

var elems = document.querySelectorAll(".title"); 
[].forEach.call(elems, function(el) { 
    el.style.color = "red"; // works 
    console.log(el.getAttribute("data-recipient")); // prints out null 
}); 

それはなぜですか?

+0

[この回答](http://stackoverflow.com/questions/36496583/is-there-a-common-way-to-get-a-polymer-elements-dataset-or-attributes)によると、 "console.log(el.dataset.recipient);を試してください; – scraaappy

+0

el.dataset.recipientは" undefined "を返します – yglodt

+0

これはitem.recipientが存在しないので未定義の値です。 'el.getAttribute'または' el.dataset'を使って呼び出すことができます。開発者ツールの要素を調べると、その属性の値がわかりますか? –

答えて

1

Polymerメソッドの中にある場合は、document.querySelector()を使用しないでください。これは、要素のローカルDOMではなく文書全体を照会するためです。この関数は、要素のシャドウDOMを照会できません。代わりにthis.$$('.title')を使用してください。

この場合、表示されている症状はこのCodepenに再現できません(つまり、el.dataset.recipientel.getAttribute('data-recipient')はどちらも期待値を返します)。

関連する問題