Polymer 我如何知道模板重复已完成?

Polymer 我如何知道模板重复已完成?,polymer,Polymer,元素需要一些时间才能重复模板来呈现所有内容,所以使用纸张微调器通知用户等待 如何知道模板重复已完成,以便关闭微调器 以及相关问题:如何选择内部元素“项目详细信息”?同样,模板重复必须首先完成 以下是我正在使用的代码: <polymer-element name="item-list"> <template> <paper-spinner active></paper-spinner> <template id="rep

元素需要一些时间才能重复模板来呈现所有内容,所以使用纸张微调器通知用户等待

如何知道模板重复已完成,以便关闭微调器

以及相关问题:如何选择内部元素“项目详细信息”?同样,模板重复必须首先完成

以下是我正在使用的代码:

<polymer-element name="item-list">

  <template>
    <paper-spinner active></paper-spinner>

    <template id="repeat_items" repeat="{{ item  in  car.items }}">
         <item-details id="item_details" item="{{item}}"></item-details>
    </template>....

....
这是对问题的模拟:

编辑

来自研究的链接:

您可能正在寻找
domReady

当元素的初始子元素集保证存在时调用。这是戳元素的父级或轻DOM子级的适当时间。另一个用途是当您有同级自定义元素时(例如,它们同时被.innerHTML绑定在一起)。在元素A可以使用B的API/属性之前,元素B需要升级。domReady回调确保这两个元素都存在

至于选择元素,您可以像这样遍历组件的阴影dom:

this.shadowRoot.querySelector(selector);
编辑

如果您预先准备好了所有数据,那么
domReady
钩子非常有用。如果异步获取数据,则可以使用

下面是在数据更改后成功选择子组件的示例。请注意
setTimeout(f,1)
将选择推迟到DOM更新之后

carsChanged: function(){
    var _this = this;
    setTimeout(function(){
       console.log(_this.shadowRoot.querySelectorAll('item-details'))
    },1)
}

我建议这样做-


利用Polymer的onmutate函数监视DOM节点的更改。请注意,它只被调用一次,因此每次加载新项目并重新启动微调器时,您都需要重新注册它。

我在父元素中使用domReady进行了测试,没有,它来得太早,模板重复未完成。子元素不可选择。有一些子元素在该事件之后呈现其内容。普朗克的例子说明了这一点。哦,好的。所以您可能是从ajax调用中获取数据,对吗?我将补充我的答案。是的,数据来自AJAX调用,并在parent ready()方法中完成。是的,这解决了给定的问题模拟。但在真正的任务中,每一项都有自己的细节,这又是一个单独的元素,包含AJAX加载的数据,而这些“突变”我无法捕捉。
carsChanged: function(){
    var _this = this;
    setTimeout(function(){
       console.log(_this.shadowRoot.querySelectorAll('item-details'))
    },1)
}