【问题标题】:How to use ic-ajax with jsonp?如何将 ic-ajax 与 jsonp 一起使用?
【发布时间】:2014-09-02 18:41:31
【问题描述】:

在控制器中:

/*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 解析的对象。我有一种感觉,这可能与 ember 运行循环有关,如mentioned here

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

【问题讨论】:

  • 在有更多关于ic-ajax 库的问题之前,请不要为它创建标签。我出于某种原因将其从您的帖子中删除。
  • @MartijnPieters 这是对这个问题最重要的一个标签
  • 不,不是。还没有专家会关注这个标签;没有人会找到您的帖子,只要关注一个只附有一两个问题的标签。
  • 不要继续重新添加标签。回滚战争不会有任何进展。请转至Meta Stack Overflow 讨论此类问题。您的特定标签受到审查因为meta post.
  • 那么,如果这个标签只有一个问题,那么标签的有效性不会降低。通过阻止创建第一个,您也阻止了后续的。

标签: javascript ajax ember.js rsvp.js


【解决方案1】:

您不能从计算属性返回承诺。

计算属性不解析承诺,这意味着“myData”是一个承诺,而不是承诺解析为的值。 您可能应该将其移至 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

【讨论】:

    猜你喜欢
    • 2011-08-22
    • 2013-08-16
    • 1970-01-01
    • 2013-08-20
    • 2015-12-20
    • 2014-06-14
    • 2012-08-02
    • 2015-01-21
    相关资源
    最近更新 更多