2015-12-05 2 views
0

Я пытаюсь запросить услугу с помощью железной Аякса, используя следующие в моей index.html:Polymer 1,0 Авто связывания шаблона с железом Аякса

<body class="fullbleed"> 
    <template is="dom-bind" id="mainTemplate"> 
     <paper-material class="todo" elevation="1"> 
      <span>Mohammed</span> 
     </paper-material> 
     <br/> 
     <iron-ajax id="requestGeoname" auto url="http://api.geonames.org/findNearbyPlaceNameJSON" params='{{input}}' handle-as="json" last-response="{{data}}"></iron-ajax> 
     <span>{{data.geonames.0.countryName}}</span> 
     <br/> 
     <span>{{data.geonames.0.name}}</span> 
    </template> 
    <p id="geolocation">Finding geolocation...</p> 
</body> 

В моем JS код, я хотел бы прочитать { {data}}, но не смог этого сделать. Я пытался сделать это с помощью следующих действий:

<script type="text/javascript" charset="utf-8"> 
... 
console.log(document.querySelector('#requestGeoname').data); 
... 
</script> 

код дает мне неопределенными, когда я вхожу {{данные}}.

+0

Попробуйте изменить это 'console.log (. Document.querySelector ('# requestGeoname') lastResponse);'. Имя 'data', которое вы привязали, имеет значение только в родительской области. Когда вы напрямую обращаетесь к данным в элементе iron-ajax, вам нужно использовать '.lastResponse', потому что это то, что названо этим свойством в контексте элемента iron-ajax. – Dogs

ответ

1

Это должно работать:

<script type="text/javascript" charset="utf-8"> 
... 
var template = Polymer.dom(this).querySelector('template[is=dom-bind]'); 
console.log(template.data); 
... 
</script> 

Как Собаки указал, data собственности не принадлежит requestGeoname -элементу, он принадлежит к «шаблону» элементу, связанное приложение с dom-bind. Решение для собак также должно работать, но если у вас есть другие переменные, которые вы используете в своем приложении, это, вероятно, лучшее решение, поскольку они теперь доступны через объект template. Например:

... 
template.myOthervariable = "derpherp"; 
... 
1

Необходимо подождать, пока запрос будет завершен. Лучше использовать событие response (Дополнительная информация: https://elements.polymer-project.org/elements/iron-ajax#response).

<script> 
document.getElementById('requestGeoname').addEventListener('response', function(event){ 
    console.log(event.detail.response) 
}); 
</script> 

или декларативно:

<script> 
var mainTemplate = document.getElementById('mainTemplate'); 
mainTemplate.onPlacesResponse = function(event){ 
    console.log(event.detail.response); 
}; 
</script> 

<iron-ajax … on-response="onPlacesResponse" 
+0

Это тоже работает, но я хотел получить доступ к {{data}}. Спасибо. – user1894963

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