Polymer 2 queryselector不起作用

时间:2018-04-13 21:24:44

标签: javascript polymer-2.x dom-repeat

我尝试将一个eventlistener添加到一些动态创建的元素中,但我不能将它们作为目标。



//here is how I try to access it
_buildTable(data)
{
    this.$.spinner.style.display = 'none';
    this.tableHead = Object.keys(data[0]);
    this.tableData = data;
    this._test();//It is called theorically after that the data has been filled
}
_test()
{   
    var link = this.shadowRoot.querySelectorAll(".link");
    //var link = Polymer.dom(this.root).querySelectorAll(".link"); //tried this but i think it is Polymer 1.x style
    //var link = document.querySelectorAll(".link"); // I tried this
    
    console.log(link);
}

<!-- Here is the HTML dom-repeat -->
<tbody>
    <template is="dom-repeat" items="{{tableData}}" as="data">
        <tr>
            <td class="link">{{data.id_Mission}}</td>
            <td>{{data.nom}}</td>
            <td>{{data.resume}}</td>
        </tr>
    </template>
  </tbody>
&#13;
&#13;
&#13; 我错过了什么,

每个人都有一个美好的夜晚/晚上

1 个答案:

答案 0 :(得分:1)

您在保存_test后正在调用tableData,但是这些元素不会被标记到页面中,因为执行线程将转到您正在调用的方法,并且实际将呈现他们什么时候可以。要确认这是否是问题,请尝试&#34;发送到后台&#34;你的方法调用,让它延迟调用,但是尽快&#34;,但是使用setTimeout

所以你的方法是:

  _buildTable(data)
  {
    this.$.spinner.style.display = 'none';
    this.tableHead = Object.keys(data[0]);
    this.tableData = data;
    setTimeout(() => {
      this._test();
    });
  }