首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jsonp中使用ic-ajax?

如何在jsonp中使用ic-ajax?
EN

Stack Overflow用户
提问于 2014-07-12 12:13:39
回答 1查看 701关注 0票数 10

在控制器中:

代码语言:javascript
复制
/*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(),

..。在使用该控制器的模板中:

代码语言:javascript
复制
{{myData}}

这将显示:

代码语言:javascript
复制
    {
    "_id": 101,
    "_subscribers": []
    }

它看起来像一个中间对象,而不是promise解析的对象。我有一种感觉,这可能与ember run循环有关,比如mentioned here

如何让模板显示控制台日志中显示的内容?

EN

回答 1

Stack Overflow用户

发布于 2014-11-14 05:11:00

不能从计算属性返回promise。

计算属性不解析promise,这意味着'myData‘是promise,而不是promise解析成的值。您可能应该将其移动到Route的模型钩子中。如果这不是一个选项,您可以这样做:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24709585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档