提问人:bguiz 提问时间:7/12/2014 最后编辑:Tarynbguiz 更新时间:11/14/2014 访问量:715
如何在 jsonp 中使用 ic-ajax?
How to use ic-ajax with jsonp?
问:
在控制器中:
/*globals Ember*/
import { raw as icAjaxRaw } from 'ic-ajax';
...
myData: function() {
var promise = new Ember.RSVP.Promise(function (resolve, reject) {
var req = icAjaxRaw({
type: 'GET',
url: server+'/api/mydata?callback=?',
dataType: 'jsonp', //problematic
});
req.then(
function(result) {
console.log('myData', result.response);
resolve(result.response);
},
function(response) {
console.error('myData', response.jqXHR.responseText, response);
reject(response);
}
);
});
return promise;
}.property(),
...在使用该控制器的模板中:
{{myData}}
这将显示:
{
"_id": 101,
"_subscribers": []
}
它看起来像一个中间对象,而不是 promise 解析到的对象。我有一种感觉,这可能与余烬运行循环有关,如此处所述
如何让模板显示控制台日志中显示的内容?
答:
0赞
LarsJK
11/14/2014
#1
不能从计算属性返回 promise。
计算属性不解析 promise,这意味着“myData”是 promise,而不是 promise 解析为的值。 您可能应该将其移动到 Route 的模型钩子中。如果这不是一个选项,你可以做这样的事情:
myData: {},
getMyData: function() {
var self = this;
var req = ic.ajax.raw({
type: 'GET',
url: 'http://ip.jsontest.com/?callback=?',
dataType: 'jsonp'
});
req.then(
function(result) {
console.log('myData', result.response);
self.set('myData', result.response);
},
function(response) {
console.error('myData', response.jqXHR.responseText, response);
}
);
}.on('init')
检查这个 JSBin
评论
ic-ajax