document.querySelector vs Polymer.dom(this。$)。querySelector

时间:2015-06-15 20:27:41

标签: polymer polymer-1.0

对于下面给出的代码,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;
&#13;
&#13;

1 个答案:

答案 0 :(得分:6)

正如您所说document.querySelector('#createButton')将搜索整个文档,并在Polymer.dom(this).querySelector('#createButton')元素的本地DOM中搜索this

注意,您还可以在元素的本地DOM中使用this.$$(selector)作为locating dynamically-created nodes

以上所有都适用于聚合物元素定义。我认为任何webcomponents ready事件都是必要的。