如何在进行 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;
},
这没有经过测试,但它应该让你知道我该怎么做。 :)