聚合物:访问聚合物元素对象

时间:2015-05-29 16:47:26

标签: javascript html data-binding polymer web-component

我有一个名为his-service的聚合物元素:

 <polymer-element name="gis-service" attributes="response url">
  <template>
    <style>
    </style>
    <core-ajax id="ajax"
      auto
      url="{{url}}"
      method="get"
      contentType = 'application/json'
      on-core-response="{{postsLoaded}}"
      body="{{body}}"
      handleAs="xml">
    </core-ajax>
  </template>
  <script>
  Polymer('gis-service', {
    created: function() {
      this.response = [];
    },
    postsLoaded: function() {
        this.response = [];
        this.labels = [];
        this.coordinates = [];
        x = this.$.ajax.response.getElementsByTagName("CustomerServiceCenterData");
        for (i=0;i<x.length;i++) {
            if (x[i].getElementsByTagName("language")[0].innerHTML == "EN")
            {
                this.labels[i] = x[i].getElementsByTagName("label")[0].innerHTML;
                this.coordinates.push({
                    lat:x[i].getElementsByTagName("lat")[0].innerHTML,
                    lng:x[i].getElementsByTagName("lng")[0].innerHTML
                })
            }
        }
        console.log(this.coordinates);
    }
  });
  </script>
</polymer-element>

在索引文件中,我尝试访问对象标签和坐标。以下是索引的一部分:

<gis-service id="gservice" response="{{labels}}" url="someUrl">
</gis-service>
<script>
    var gis_service = document.querySelector('gis-service');
    console.log(gis_service);
</script>

如您所见,我正在尝试通过querySelector访问标签和坐标。但是,当我尝试通过以下方式获取标签时:

gis_service.labels

它给了我未定义的。变量坐标也是如此。 我这样做时可以看到两个变量:console.log(gis_service),但无法访问它们。 任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:0)

在函数之外定义它,然后你应该能够在外部使用它。此格式适用于.8版本。 1.0版本将需要使用新格式。

&#13;
&#13;
created: function() {
      this.response = [];
    },
	labels: undefined,
    postsLoaded: function() {
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您应该阅读有关数据绑定here

的内容

不要这样做:

 <core-ajax id="ajax"
      auto
      url="{{url}}"
      method="get"
      contentType = 'application/json'
      on-core-response="{{postsLoaded}}"
      body="{{body}}"
      handleAs="xml">
    </core-ajax>

请改为:

 <core-ajax id="ajax" auto url="{{url}}" method="get" contentType ='application/json' on-core-response="{{postsLoaded}}" body="{{body}}" handleAs="xml"></core-ajax>

不支持将绑定放在不同的行上

答案 2 :(得分:0)

您可以尝试其他方法来尝试访问这些值 var yourElement = document.getElementById('gservice');如果这不起作用,请尝试使用&#39; querySelector&#39;如下图所示:

<gis-service id="gservice" class="gservice" response="{{labels}}" url="someUrl"> </gis-service> <script> var gis_service = document.querySelector('gservice'); console.log(gis_service); </script>

请参阅其他类属性。

我还建议你升级到Polymer 1.0,因为它允许更强大的方法来做事......