How do I set up Ember Data to use the JSONP datatype when making its ajax calls? I am going to be using Ember with Phonegap and need to make cross-domain requests.
You need to create your own adapter which uses jsonp, you can do just that by extending a current one, have a look.
App.MyAdapter= DS.RESTAdapter.extend({})
Then you need to implement the find method among others, to use jsonp, could be something like this
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;
},
This is not tested, but it should give you the idea of how i can be done. :)
It's much easier to override the private ajaxOptions
function instead of using jQuery
. Ember's pipeline includes the removal of the jQuery dependency anyways. So do this instead:
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;
}
});
It would be create if the Ember core team could expose a public method to officially support this (instead of hacking a private api).
https://github.com/emberjs/data/blob/1.0.0-beta.15/packages/ember-data/lib/adapters/rest_adapter.js#L915