如何将 JSONP 数据类型与 Ember Data 一起使用



如何在进行 ajax 调用时设置 Ember Data 以使用 JSONP 数据类型?我将在Phonegap中使用Ember,并且需要提出跨域请求。

覆盖私有ajaxOptions函数比使用 jQuery 要容易得多。Ember的管道包括删除jQuery依赖项。所以这样做:

adapters/application.js

import DS from 'ember-data';
export default DS.RESTAdapter.extend({
    ajaxOptions: function(url, type, options) {
        var hash = this._super(url, type, options);
        hash.dataType = "jsonp";
        return hash;
    }
});

如果 Ember 核心团队可以公开一个公共方法来正式支持它(而不是黑客攻击私有 API),那将是创建的。

https://github.com/emberjs/data/blob/1.0.0-beta.15/packages/ember-data/lib/adapters/rest_adapter.js#L915

您需要创建自己的使用 jsonp 的适配器,您可以通过扩展当前适配器来做到这一点,看看。

App.MyAdapter= DS.RESTAdapter.extend({})

然后你需要实现 find 方法,使用 jsonp,可能是这样的

App.MyAdapter= DS.RESTAdapter.extend({
  find: function(store, type, id) {
     var item;
     $.ajax({
      url: 'http://api.domain/someModel',
      dataType: 'jsonp',
      success: function(response){
        item = App.someModel.create(order))
      }
    });
    return item;
  },

这没有经过测试,但它应该让你知道我该怎么做。 :)

最新更新