2015-05-29 3 views
0

У меня есть полимерный элемент, называемый его обслуживание:полимер: полимерный элемент доступа к объектам

<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), но не могу получить к ним доступ. Любая помощь приветствуется.

+1

Попробуйте слушать для ** полимер-готов ** случае, прежде чем запрашивать пользовательские элементы. –

+0

Еще не определено – user1894963

+0

this.labels = []; определяется внутри функции. –

ответ

0

Определите его вне функции, а затем вы сможете использовать его снаружи. Этот формат будет работать для версии .8. 1.0, необходимо будет использовать новый формат.

created: function() { 
 
     this.response = []; 
 
    }, 
 
\t labels: undefined, 
 
    postsLoaded: function() {

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> 

Ввод привязок на разных линиях Isnt поддерживается еще

0

Существует и другие способы вы можете попытаться получить доступ к значениям, попробуйте var yourElement = document.getElementById('gservice');, если это не сработает, попробуйте «querySelector», как показано ниже:

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

См. Дополнительный атрибут класса.

Также я рекомендую вам перейти к полимеру 1.0, что позволяет им более надежные способы делать вещи ...

Смежные вопросы