2013-08-03 155 views
2

我正在使用跨域REST api。 我已经定义了我的自定义REST适配器来触发我的API。 Pb是删除由ember-model设置的“.json”automaticaly。将RESTAdapter配置为不为get/list请求设置.json扩展

如何配置我的适配器以避免将我的 “替代函数”(URL = url.replace( 'JSON', '');

App.Book.adapter = Ember.RESTAdapter.create({ 
    ajaxSettings: function(url, method) { 
    var authorization= "Basic " + btoa("login" + ":" + "pwd"); 
    url=url.replace('.json', ''); 
    return { 
     url: url, 
     type: method, 
     dataType: "json", 
     headers: { 
     "Authorization": authorization 
     }, 
    }; 
    } 
}); 
App.Certificate.url='http://mysite/api/v1/books'; 

回答

2

How to configure my adapter to avoid setting my "replace function" (url=url.replace('.json', '');)

由于烬模型没有提供任何配置选项来改变这种行为,恕我直言,你的解决方案做url = url.replace('.json', '');并不是那么糟糕。

我能想到的另一种可能的方式可能是重新打开RESTAdapter并覆盖buildURL函数以不包括.json

Ember.RESTAdapter.reopen({ 
    buildURL: function(klass, id) { 
    var urlRoot = Ember.get(klass, 'url'); 
    if (!urlRoot) { throw new Error('Ember.RESTAdapter requires a `url` property to be specified'); } 

    if (!Ember.isEmpty(id)) { 
     return urlRoot + "/" + id; 
    } else { 
     return urlRoot; 
    } 
    } 
}); 

但是,如果原始代码的变化和需要更新你不得不也改变你覆盖的lib这不是面向未来。

希望它有帮助。

+0

Tx,听起来不错。但它返回一个错误(Uncaught ReferenceError:get is not defined).. – fvisticot

+0

@fvisticot,抱歉,编辑了答案,它应该是'Ember.get' – intuitivepixel