从我的Ember应用程序中,我必须调用一些REST API,它只支持URL中的矩阵参数(由';'分隔),并且不支持更多经典查询参数(由'?'和'&amp;'分隔)。< / p>
我使用的是Ember Data 1.0.0-beta.15。
默认情况下,当我调用store.find()时,使用查询参数构建请求URL。是否有任何配置方法来指示RESTAdapter(我相信这是我的情况下要配置的组件)来应用矩阵参数?
谢谢! 安德烈
答案 0 :(得分:0)
最后我的决定是覆盖findQuery()方法如下:
export default DS.RESTAdapter.extend({
findQuery: function(store, type, query) {
if (query.matrix) {
var url = this.buildURL(type.typeKey);
Object.keys(query).forEach(function(queryParamName) {
if (queryParamName.toString() !== 'matrix') {
url += ';' + queryParamName + '=' + query[queryParamName];
}
});
return this.ajax(url, 'GET', { data: {} }); //originally was '{ data: query }'
} else {
return this._super(store, type, query);
}
}
}
我介绍了一个专门的&#39;矩阵&#39;查询参数是可选的,可以通过路由设置,并指示需要带有矩阵参数的URL。如上所述,&#39;矩阵&#39;查询参数被findQuery()方法拦截,不会转到服务器。