如何在渲染聚合物元素后触发事件
How to trigger event after rendering Polymer element?
我正在实现一个搜索列表元素,但在显示搜索结果的当前计数时遇到了问题。它总是显示我上一步的结果。有没有办法在DOM完成渲染后获得值(或触发事件)?
这是代码:
//main
<template>
<items-list
items="{{items}}"
search="{{search}}">
</items-list>
count: {{count}}
</template>
<script>
Polymer({
searchChanged: function () {
this.count = this.shadowRoot.querySelector('items-list').getCount();
}
});
</script>
//item-list
<polymer-element name="items-list" attributes="search items">
<template>
<template repeat="{{item in items}}">
<item
hidden?="{{toHide(search, item.name)}}"
item="{{item}}">
</item>
</template>
</template>
<script>
Polymer({
toHide: function (search, breedName) {
//...
},
getCount: function () {
var items = this.shadowRoot.querySelectorAll('item:not([hidden])');
return items.length;
}
});
</script>
</polymer-element>
polymer-ready
事件。
您可以使用侦听此事件并做出相应的响应,如下面的示例所示。
// in you main html page
window.addEventListener('polymer-ready', function(e){
// rest of your code
});
看起来您有一个竞赛条件。到您查询计数时,DOM尚未更新。这是聚合物中的一个常见问题,这就是为什么我们有作业方法。它会自动为你解禁,并保留你的范围。很方便!试试这样的东西:
<template>
<items-list
items="{{items}}"
search="{{search}}">
</items-list>
count: {{count}}
</template>
<script>
Polymer({
searchChanged: function () {
this.job(function() {
this.count = this.shadowRoot.querySelector('items-list').getCount();
}, 100);
}
});
</script>
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 将事件聚焦/模糊在可编辑内容的元素上
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 在IE8中不起作用的元素上触发单击事件
- 正在ng重复元素上添加事件
- 单击p元素时的javascript触发事件
- 存在每个时间元素的javascript事件
- Firefox:点击并更改未附加到文档树中的复选框元素上的事件
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- 将jQuery事件应用于所有类元素
- 在IE8上使用jQuery克隆HTML5元素和事件
- 单击其他元素时,我如何使用 jQuery 忽略更改事件
- 访问代码生成的输入元素上的keyup事件
- 如何查明鼠标按下事件是否发生在滚动条上或元素中的其他任何位置
- 当元素到达屏幕上的某个位置时触发事件
- Mootools:如何在点击时保持元素高亮显示并停止所有事件
- 将事件侦听器添加到文档,而不是签入元素存在,然后添加事件侦听器
- JQuery:使用clone()生成的元素不采用原始的事件属性
- 从其他元素上的单击事件访问image src属性
- 触发“三个”的点击事件.元素