对于下面给出的代码,document.querySelector('createButton')
和Polymer.dom(this.$).querySelector('createButton')
应该返回相同的元素吗?
如果是这样,哪一个是最佳做法?不是第一种情况我们在整个dom树上搜索(我的意思是包括主机/根)?在第二个我们正在这个元素的dom树中搜索?
这些是否都可以在任何时候起作用?因为我相信我遇到了一种情况,所以第二种情况只能在ready
内部工作(我的意思是当触发Web组件就绪事件时)。
<dom-module id="bortini-tv-create">
<template>
<form>
<paper-input label="Name" value="{{tv.name}}"></paper-input>
<paper-input label="Logo" value="{{tv.logo}}"></paper-input>
<paper-input label="Address" value="{{tv.address}}"></paper-input>
<paper-input label="Web site" value="{{tv.webSite}}"></paper-input>
<paper-input label="Registration number" value="{{tv.regNumber}}"></paper-input>
<br/>
<br/>
<paper-button id="createButton" raised on-tap="handleTvCreate">
<iron-icon icon="redeem"></iron-icon>
Add
</paper-button>
<paper-button id="cancelButton" raised on-tap="handleCancelTvCreate">
<iron-icon icon="cancel"></iron-icon>
Cancel
</paper-button>
</form>
<iron-ajax
id="ironAjax"
url="/api/tv"
content-type="application/json"
handle-as="json"
method="POST">
</iron-ajax>
<paper-toast id="toast"
duration="3000"
text="TV {{tv.name}} has been created">
</paper-toast>
</template>
</dom-module>
&#13;
答案 0 :(得分:6)
正如您所说document.querySelector('#createButton')
将搜索整个文档,并在Polymer.dom(this).querySelector('#createButton')
元素的本地DOM中搜索this
。
注意,您还可以在元素的本地DOM中使用this.$$(selector)
作为locating dynamically-created nodes。
以上所有都适用于聚合物元素定义。我认为任何webcomponents ready
事件都是必要的。