1

我尝试向一些动态创建的元素添加事件监听器,但我无法定位它们。

//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>
我错过了什么,

祝大家有一个愉快的夜晚/夜晚/白天

4

1 回答 1

1

您在保存_test后调用tableData,但元素不会被标记到页面中,因为执行线程会转到您正在调用的方法,并且会在可能的情况下实际呈现它们。要确认这是否是问题,请尝试“发送到后台”您的方法调用,延迟调用它,但“尽快”,但使用setTimeout

所以你的方法是:

  _buildTable(data)
  {
    this.$.spinner.style.display = 'none';
    this.tableHead = Object.keys(data[0]);
    this.tableData = data;
    setTimeout(() => {
      this._test();
    });
  }
于 2018-04-14T07:29:39.577 回答