【发布时间】:2015-11-02 14:29:22
【问题描述】:
我正在使用聚合物 1.0 的 iron-jsonp-library 组件来触发跨域调用以获取数据。我下面的组件代码成功触发了 jsonp 请求,我在响应中得到了预期的 json 数据。但是在 iron-jsonp-library 的“on-data”属性中指定的事件不会触发。控制台中没有提示 javascript 错误。因此无法弄清楚出了什么问题。 on-data 属性在 Angular 团队成员https://github.com/surma/polymer-reddit-api 发布的示例应用程序中成功运行。但是对于我的跨域调用,iron-jsonp-lib 组件没有按预期工作。 我做错什么了吗?
<link rel="import" href="bower_components/iron-jsonp-library/iron-jsonp-library.html">
<dom-module id="galpicker-api">
<template>
<iron-jsonp-library on-data="_loadNewData" library-url="[[_requestUrl]]" callbackName="_ajaxLoad"></iron-jsonp-library>
</template>
<script>
Polymer({
is: 'galpicker-api',
properties: {
searchtext: {
type: String,
reflectToAttribute: true,
notify: true
},
employees: {
type: Array,
readOnly: true,
value: function() {
return [];
},
notify: true
},
baseUrl: {
type: String,
reflectToAttribute: true,
value: 'https://example.com'
},
_requestUrl: {
type: String,
readOnly: true,
computed: '_computeUrl(baseUrl, searchtext)',
notify: true
}
},
_computeUrl: function(baseUrl, searchtext) {
return baseUrl + '/api/v1/Employees/search?q=' + searchtext + '&jsonp=%%callback%%';
},
_loadNewData: function(ev) {
alert(ev);
this._setEmployees(
ev.detail[0].map(function(employee) {
return {
firstName: employee.firstName,
lastName: employee.lastName,
department: employee.department
};
}));
},
_data: function(ev) {
alert(ev);
},
_ajaxLoad: function(data){
alert(data);
}
});
</script>
</dom-module>
【问题讨论】:
-
这仍然可以让您获取数据吗?我在当前文档中没有看到 on-data 属性...谢谢