如何在聚合物1.0中选择dom模块内的元素?

时间:2016-04-26 06:42:39

标签: dom polymer-1.0

我有以下dom-module,我正在尝试为其创建交互。

<dom-module is="bw-image-upload">
<template>
  <vaadin-upload  id="uploader"
                  target="{{ API_URL}}/images/upload"
                  method="POST"
                  max-files="1"
                  max-file-size="200000"
                  accept="image/*"
                  upload-success="uploadResponseHandler"
                  file-reject="errorHandler"
  >
  </vaadin-upload>
</template>
  <script>
      Polymer({
                is: 'bw-image-upload',
                properties: {
                      image: String,
                      notify: true
                }
              });

      var uploader = document.querySelector('#uploader');

      uploader.addEventListener('upload-before', function(event) {
            console.log(event);
      });

  </script>
</dom-module>

我想通过它的ID选择vaadin-upload元素,但它返回null,我很困惑为什么它返回null。

如何在Polymer中选择这样的元素?

1 个答案:

答案 0 :(得分:2)

如果元素具有id并静态添加到模板,则可以使用

var uploader = this.$.uploader;

获取对ID为uploader的元素的引用。

如果元素位于<template is="dom-if"><template is="dom-repeate">内或以其他方式动态创建,则不支持。

在这种情况下,您可以使用

var uploader = this.$$('#uploader');

this.$$(...)提供完整的CSS选择器支持并返回第一个匹配元素,而this.$...仅支持ID。