Ember cli,如何在rest适配器中动态更改rest调用
我正在使用ember cli,如何在rest适配器中动态更改rest调用。如果我使用路径参数而不是查询参数?例如:Ember cli,如何在rest适配器中动态更改rest调用,rest,ember.js,ember-data,ember-cli,Rest,Ember.js,Ember Data,Ember Cli,我正在使用ember cli,如何在rest适配器中动态更改rest调用。如果我使用路径参数而不是查询参数?例如: export default DS.RESTAdapter.extend({ namespace:'res/v1/users/id', pathForType: function() { return Ember.String.underscore("friends");},}); 根据下拉列表中的用户选择,我们得到“id”,使用该id,我需
export default DS.RESTAdapter.extend({
namespace:'res/v1/users/id',
pathForType: function() {
return Ember.String.underscore("friends");},});
根据下拉列表中的用户选择,我们得到“id”,使用该id,我需要从数据库中获得用户朋友。
你能建议一个更好的方法吗。My aa应用程序支持pathparams而不是查询参数要自定义URL,请覆盖适配器中的
export default DS.RESTAdapter.extend({
namespace:'res/v1/users/id',
pathForType: function() {
return Ember.String.underscore("friends");},});
棘手的部分是从适配器访问相关记录。例如,您为给定用户请求朋友。您在朋友
适配器中工作,但需要知道用户
的id才能将其包含在URL中
export default DS.RESTAdapter.extend({
namespace:'res/v1/users/id',
pathForType: function() {
return Ember.String.underscore("friends");},});
为此,请在buildURL
方法的snapshot
参数上使用
export default DS.RESTAdapter.extend({
namespace:'res/v1/users/id',
pathForType: function() {
return Ember.String.underscore("friends");},});
或者,您可能希望覆盖一些buildURL
的底层方法,例如,这取决于您从应用商店请求模型的方式。使用find.query()
,您将从查询中检索用户的id
export default DS.RESTAdapter.extend({
namespace:'res/v1/users/id',
pathForType: function() {
return Ember.String.underscore("friends");},});
如果这对您没有帮助,请以您尝试从商店取回朋友的方式回应。我在environment.js“userId”中创建了一个变量。当我选择一个用户时
export default DS.RESTAdapter.extend({
namespace:'res/v1/users/id',
pathForType: function() {
return Ember.String.underscore("friends");},});
我将控制器中的config.userId设置为相应的Id
export default DS.RESTAdapter.extend({
namespace:'res/v1/users/id',
pathForType: function() {
return Ember.String.underscore("friends");},});
config.userId=this.get('selectedUser');
在适配器的pathforType中,我使用了这个变量
export default DS.RESTAdapter.extend({
namespace:'res/v1/users/id',
pathForType: function() {
return Ember.String.underscore("friends");},});
pathForType: function() {
return Ember.String.underscore(config.userId+"/friends");
}
您只需要添加一条导入语句
export default DS.RESTAdapter.extend({
namespace:'res/v1/users/id',
pathForType: function() {
return Ember.String.underscore("friends");},});
import config from '../config/environment';
如果有人知道更好的方法,请建议我。感谢大家的回复buildURL()
只接受imo的类型。因此,您必须通过更多的jazz
export default DS.RESTAdapter.extend({
namespace:'res/v1/users/id',
pathForType: function() {
return Ember.String.underscore("friends");},});
我在应用程序适配器中执行了以下操作
export default DS.RESTAdapter.extend({
namespace:'res/v1/users/id',
pathForType: function() {
return Ember.String.underscore("friends");},});
$ember生成适配器应用程序
export default DS.RESTAdapter.extend({
namespace:'res/v1/users/id',
pathForType: function() {
return Ember.String.underscore("friends");},});
app/adapters/application.js
export default DS.RESTAdapter.extend({
namespace:'res/v1/users/id',
pathForType: function() {
return Ember.String.underscore("friends");},});
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;
},
})
})) 您要调用什么路径从服务器获取朋友res/v1/users/id/friends
?是的,id在这里是可变的。这取决于我选择的用户,据我所知,没有直接的方法可以做到这一点。关于嵌套资源api支持的讨论由来已久。如果您管理后端,您可能会发现最好的选择是更改api以避免使用嵌套资源。感谢您的回复。我会看看这是否对我有帮助
export default DS.RESTAdapter.extend({
namespace:'res/v1/users/id',
pathForType: function() {
return Ember.String.underscore("friends");},});