例如,如果我在index.html文件中的自动绑定模板中有以下代码:
的index.html
<template is="auto-binding">
<core-ajax id="ds" auto url="url/to/data.json" response="{{data}}"></core-ajax>
<my-items items="{{data}}"></my-items>
</template>
app.js
(function(document) {
'use strict';
document.addEventListener('polymer-ready', function() {
var responseData = ????
});
})(wrap(document));
答案 0 :(得分:2)
通常我们使用与core-ajax的数据绑定,但如果您需要使用JS来获取它,您可以从core-response
触发的core-ajax
事件中获取响应,或者您可以查看在response
标记本身的core-ajax
属性中。 jsbin example
<core-ajax auto url="http://date.jsontest.com"></core-ajax>
<script>
document.addEventListener('polymer-ready', function() {
var ajax = document.querySelector('core-ajax');
ajax.addEventListener('core-response', function(e) {
console.log(e.detail.response);
// or
console.log(e.target.response);
// or
console.log(ajax.response);
});
});
</script>
编辑:OP希望获得自动绑定模板中的core-ajax元素
当template-bound
模板将其内容标记到页面时,您应该监听auto-binding
模板触发的事件。然后,querySelector
可以core-ajax
。 jsbin example
<template is="auto-binding">
<core-ajax auto url="http://date.jsontest.com"></core-ajax>
</template>
<script>
var tmpl = document.querySelector('template');
tmpl.addEventListener('template-bound', function() {
var ajax = document.querySelector('core-ajax');
ajax.addEventListener('core-response', function(e) {
console.log(e.detail.response);
// or
console.log(e.target.response);
// or
console.log(ajax.response);
});
});
</script>
编辑:展示更好的方法
由于原始海报专门询问是否使用JavaScript获取响应,因此我给出了完全JS方法。你可以使用绑定来清理它。 jsbin example
<template is="auto-binding">
<core-ajax auto
response="{{data}}"
on-core-response="{{ajaxHandler}}"
url="http://date.jsontest.com"
handleAs="json"></core-ajax>
<h1>{{data.date}}: {{data.time}}</h1>
</template>
<script>
addEventListener('template-bound', function(e) {
// do something else with response
e.target.ajaxHandler = function(event) {
console.log(event.target.response);
}
});
</script>