2014-02-09 26 views

回答

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; 
    }, 

这不是测试,但它应该给你的我怎么能想法做完了。 :)

+0

这个工作,因为令人欣慰的只有一个在灰烬-数据的方法,需要定义的数据类型。 – edborden

+1

然而,另一件需要注意的事情是,Phonegap不需要使用JSONP,只需在config.xml中设置域可访问性即可。 – edborden

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; 
    } 
}); 

这将是创造,如果灰烬核心团队可能会暴露的公共方法正式支持这一(而不是黑客的私人API)。

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

+0

这绝对是更好的答案 – anushr