gpt4 book ai didi

javascript - polymer 查询选择器在 polymer 元素中找不到自定义 polymer 元素

转载 作者:行者123 更新时间:2023-11-30 17:08:37 30 4
gpt4 key购买 nike

我正在尝试通过 querySelector 或等效方法获取在另一个元素中定义的自定义 Polymer 元素。我的代码如下:

<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>

我见过无数堆栈溢出 posts与我正在尝试完成的类似,但没有取得任何好的结果,我也尝试过:

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 - polymer 查询选择器在 polymer 元素中找不到自定义 polymer 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27476513/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com