聚合物查询选择器在聚合物元素中找不到自定义聚合物元素
Polymer querySelector can't find custom polymer element in polymer element
我正在尝试通过querySelector或等效项在另一个元素中定义自定义聚合物元素。 我拥有的代码如下:
<polymer-element name="component-elem">
<!-- custom elem here -->
<ajax-service id="testComp"></ajax-service>
<template>
</template>
<script>
Polymer({
ready: function(){
var x = this.shadowRoot.querySelector('#testComp');
console.log(x); //always prints null
}
});
</script>
</polymer-element>
我见过许多类似于我想要完成的堆栈溢出帖子,但没有任何好的结果,我也尝试过:
this.$.testComp
和
this.shadowRoot.querySelectorAll('#testComp')
它确实返回了一个对象,但我不清楚如何使用结果。
我的最终目标是添加一个自定义事件侦听器,用于侦听从 <ajax-service>
元素触发的事件。
我希望通过使用模板 repeat={{response}} 将来自 Ajax-service 元素的结果处理成重复元素。我不希望复制 Ajax-service 元素,因此 Ajax-service 在模板之外。
谁能给出任何建议?
<polymer-element name="component-elem">
<!-- custom elem here -->
<template>
<ajax-service id="testComp"></ajax-service>
<template repeat="{{response}}">
// html for looped items
<template if="{{response.data}}">
// do something with response.data
</template>
</template>
</template>
<script>
Polymer({
ready: function(){
var x = this.shadowRoot.querySelector('#testComp');
console.log(x); //always prints null
}
});
</script>
</polymer-element>
问题是您的元素模板中没有 AJAX 元素。 自定义元素中的第一个模板是 Shadowdom 开始的地方。 因此,对于要使用这些选择器选择的任何项,它必须位于元素的第一个模板中。 稍后在元素原始模板中使用重复模板。
请记住,模板可以像上面的例子一样嵌套。
相关文章:
- 如何动态创建聚合物元素
- 造型:主机的聚合物元素与Javascript
- 如何在html和javascript中捕捉聚合物元素的屏幕截图
- YUIDocs 解析聚合物元素
- 仅在需要时实例化聚合物元素
- 如何从不同的元素访问聚合物元素中的属性
- 如何在渲染聚合物元素后触发事件
- 更新聚合物元素模板
- 如何使用javascript函数创建可以调用javascript函数的聚合物元素
- 聚合物元素css未显示-检查器中没有错误
- 使用jquery访问聚合物元素变量
- 聚合物元素加载非常缓慢
- 如何观察聚合物元素属性值从索引.html的变化
- 动态添加聚合物元素的就绪事件
- 如何在没有事件的自定义聚合物元素之间进行讨论
- 删除聚合物元素,文件上传在实例上传时逐渐添加更多文件
- 如何确定聚合物元素是否加载
- 按动态属性值选择聚合物元素
- 聚合物元素注册和生命周期(创建和准备调用两次)
- 如何为聚合物元素添加功能属性