2015-12-05 108 views
0

我試圖通過請求服務鐵阿賈克斯用我的index.html如下:與聚合物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);'。您綁定的名稱「數據」只與父範圍相關。當你直接訪問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

也可以,但我想訪問{{數據}}。謝謝。 – user1894963