Templates 如何访问同一个“目录”中的模板内容;事件“;当它在聚合物中可见时
让我试着把我的问题删掉Templates 如何访问同一个“目录”中的模板内容;事件“;当它在聚合物中可见时,templates,polymer,Templates,Polymer,让我试着把我的问题删掉 <polymer-element name="my-element"> <template> <template if="{{show}}"> <my-other-element id="elementWithUnexposedInternals"></my-other-element> </template> </temp
<polymer-element name="my-element">
<template>
<template if="{{show}}">
<my-other-element id="elementWithUnexposedInternals"></my-other-element>
</template>
</template>
<script>
Polymer({
show: false,
showChanged: function{
this.$.elementWithUnexposedInternals.someProperty = true;
}
});
</script>
</polymer-element>
聚合物({
秀:假,,
showChanged:功能{
此.$.ElementWithUnpositionInternals.someProperty=true;
}
});
我的另一个元素似乎无法在this.$行中访问,因为模板尚未呈现它
我怎样才能避开这个“订单”问题
干杯您可以在“domReady”事件侦听器中设置“show”的值。实际上,您有两个问题。一个是元素尚未呈现,另一个是元素将永远不会被添加到
中。$
,它只填充元素的静态内容:
您可以通过添加静态容器并使用querySelector来解决第二个问题:
<polymer-element name="my-element">
<template>
<div id="container>
<template if="{{show}}">
<my-other-element id="elementWithUnexposedInternals"></my-other-element>
</template>
</div>
...
var el = this.$.container.querySelector('#elementWithUnexposedInternals');
setTimeout(函数,0)
可能也会起作用——您所需要做的就是延迟事件循环中的一个周期。但是async
在Polymer中更为惯用(另外,它使用绑定到自定义元素实例的this
调用回调,这很方便)
此处的工作示例:
showChanged: function(){
this.async(function() {
var myEl =
this.$.container.querySelector("#elementWithUnexposedInternals");
myEl.someProp = true;
});
},