Javascript 聚合物2查询选择器不';行不通

Javascript 聚合物2查询选择器不';行不通,javascript,polymer-2.x,dom-repeat,Javascript,Polymer 2.x,Dom Repeat,我尝试将eventlistener添加到一些动态创建的元素中,但无法将它们作为目标 //下面是我如何尝试访问它的 _构建表(数据) { 此.$.spinner.style.display='none'; this.tableHead=Object.keys(数据[0]); this.tableData=数据; this._test();//在填充数据之后,从理论上调用它 } _测试() { var link=this.shadowRoot.queryselectoral(“.link”)

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

//下面是我如何尝试访问它的
_构建表(数据)
{
此.$.spinner.style.display='none';
this.tableHead=Object.keys(数据[0]);
this.tableData=数据;
this._test();//在填充数据之后,从理论上调用它
}
_测试()
{   
var link=this.shadowRoot.queryselectoral(“.link”);
//var link=Polymer.dom(this.root.queryselectoral(“.link”);//尝试过这个,但我认为它是Polymer 1.x风格
//var link=document.queryselectoral(“.link”);//我试过这个
控制台日志(链接);
}

{{data.id_Mission}
{{data.nom}
{{data.resume}

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

所以你的方法是:

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

你到底想要实现什么?Polymer通常不需要直接访问DOM,数据绑定在大多数情况下都能解决这一问题。问题是我尝试过:
{{data.id_Mission}
,但是“on-tap”不起作用,所以我想我会在之后绑定一个click事件。您好@mishu,setTimeout技巧正在发挥作用,谢谢,但是我不明白为什么你能解释一下我知道它与javascript的“平衡”方面有什么联系。在渲染之前,我正在调用该函数。但是,在没有任何“时间”设置的情况下设置setTimeout是如何工作的呢?@NeitoFR这是因为当您设置数据时,表行的呈现基本上是在队列中,等待一段时间来执行它。
setTimeout
技巧也会将调用推入队列,因此它会确保在之后运行。有关更多详细信息,您可以查看此页面,尤其是
零延迟
下的部分。您可以认为数据已保存到
表格数据
,但需要运行类似于观察者的操作来实际呈现表格行,这就是作业位于队列中且未立即执行的原因。因此,通过使用setTimeout,您正在向队列中添加一些内容,并在已经存在的“观察者”之后添加它。