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

时间:2014-02-09 02:35:46

标签: ember.js

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

2 个答案:

答案 0 :(得分:7)

覆盖私有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

答案 1 :(得分:4)

您需要创建自己的使用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;
  },

这未经过测试,但它应该让您了解我如何才能完成。 :)