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

Ember.js 如何将JSONP数据类型与Ember数据一起使用?,ember.js,Ember.js,在进行ajax调用时,如何设置Ember数据以使用JSONP数据类型?我将在Phonegap中使用Ember,需要进行跨域请求。您需要创建自己的适配器,该适配器使用jsonp,您可以通过扩展当前适配器来实现这一点,看一看 App.MyAdapter= DS.RESTAdapter.extend({}) 然后,您需要实现find方法和其他方法,以使用jsonp,可以是这样的 App.MyAdapter= DS.RESTAdapter.extend({ find: function(store

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

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

这没有经过测试,但它应该让您了解我可以如何做到这一点。:)

重写private
ajaxOptions
函数比使用
jQuery
容易得多。Ember的管道包括删除jQuery依赖项。因此,请改为:

适配器/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),这将是一个非常好的选择


这是可行的,因为谢天谢地,在Ember数据中只有一种方法需要定义数据类型。但是,我在这样做时发现,Phonegap不需要使用JSONP,只需要在config.xml中设置域可访问性。这肯定是更好的答案