要么我做了什么可怕的错误,要么聚合物就是不喜欢我。见下文:
<polymer-element name="menu-paper-ui" noscript>
<template>
<paper-dialog heading="Dialog" transition="paper-dialog-transition-bottom">
[ .. ]
</paper-dialog>
<paper-button label="Dialog Bottom" on-tap="{{toggleDialog}}"></paper-button>
</template>
<script>
Polymer('menu-paper-ui', {
toggleDialog : function() {
var dialog = document.querySelector('paper-dialog');
console.log(dialog); //returns null
dialog.toggle();
}
})
</script>
</polymer-element>现在,我有理由使用querySelector。所以,如果有人能告诉我出了什么问题,那就太好了!
发布于 2014-07-09 08:35:05
这个问题与Using querySelector to find nested elements inside a Polymer template returns null几乎完全相同。
简单的回答是,聚合物元素模板中的元素被放入该元素的ShadowDOM中,在该元素之外的任何元素中都不可见。这样您就可以更容易地控制样式,并且元素is被限定范围。
您可以给对话框一个id并使用聚合物的自动节点查找,或者使用this.shadowRoot.querySelector('paper-dialog')。
发布于 2014-07-09 08:42:18
问题是您无法使用document.querySelector访问自定义元素中的影子DOM。See my answer to a similar question。
https://stackoverflow.com/questions/24646081
复制相似问题