我正在尝试通过iron-ajax使用以下索引在我的index.html中请求服务:
<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>
当我记录{{data}}时,代码给我未定义。
答案 0 :(得分:1)
这应该有效:
<script type="text/javascript" charset="utf-8">
...
var template = Polymer.dom(this).querySelector('template[is=dom-bind]');
console.log(template.data);
...
</script>
正如Dogs所指出的,data
属性不属于requestGeoname
- 元素,它属于与dom-bind
绑定的“模板”项。 Dogs解决方案也应该有效,但是如果你在应用程序中使用其他变量,这可能是更好的解决方案,因为它们现在可以通过template
- 对象访问。例如:
...
template.myOthervariable = "derpherp";
...
答案 1 :(得分:1)
您必须等到请求完成。最好使用活动<script>
document.getElementById('requestGeoname').addEventListener('response', function(event){
console.log(event.detail.response)
});
</script>
(更多信息:https://elements.polymer-project.org/elements/iron-ajax#response)。
<script>
var mainTemplate = document.getElementById('mainTemplate');
mainTemplate.onPlacesResponse = function(event){
console.log(event.detail.response);
};
</script>
<iron-ajax … on-response="onPlacesResponse"
或声明地说:
MainModel.getNato is not a function