我正在使用ember-cli,如何在其余适配器中更改其余的呼叫。如果我使用路径参数不查询参数?例如:
export default DS.RESTAdapter.extend({
namespace:'res/v1/users/id',
pathForType: function() {
return Ember.String.underscore("friends");},});
根据用户从下拉列表中选择的内容,我们使用我需要的ID从数据库中获取用户朋友的" id" 你能建议一个更好的方法吗?我的应用程序支持pathparams而不是查询参数
答案 0 :(得分:1)
要自定义网址,请覆盖适配器中的buildURL
method。
棘手的部分是从适配器访问相关记录。例如,您为给定用户请求朋友。您使用friend
适配器,但需要知道user
的ID才能将其包含在网址中。
为此,请使用snapshot
方法的buildURL
参数上的record
property。
或者,您可能希望覆盖buildURL
的某些基础方法,例如urlForFindQuery
,具体取决于您从商店请求模型的方式。使用find.query()
,您将从查询中检索用户的ID。
如果这对您没有帮助,请回复您尝试从商店中取友的方式。
答案 1 :(得分:0)
我在enviroment.js'userId'中创建了一个变量。什么时候我选择一个用户 我将控制器中的config.userId设置为相应的Id。
config.userId=this.get('selectedUser');
在适配器的pathforType中,我使用了这个变量
pathForType: function() {
return Ember.String.underscore(config.userId+"/friends");
}
你只需要添加一个导入语句
import config from '../config/environment';
如果有人了解更好的方法,请建议我。全心全意感谢您的回复
答案 2 :(得分:0)
buildURL()
只接受type
imo。所以你必须传递一些爵士乐。
我在应用程序适配器
中执行了以下操作$ ember生成适配器应用程序
应用程序/适配器/ application.js中
import DS from 'ember-data';
export default DS.RESTAdapter.extend({
findQuery: function(store, type, query) {
var urlQuery = query.theshityouwant;
var reply = this.ajax(this.buildURL(type.typeKey + '/' + urlQuery), 'GET', { headers: all});
return reply;
},
})
});