下面更新
我找到了解决方案,但我不知道这是否真的可行。首先,我使用 findQuery 调用设置路由:
App.UserCustomRoutesRoute = Em.Route.extend({
model: function() {
return this.store.find('user_custom_route', {user_id: this.controllerFor('user').get('user_id')});
}
});
然后我连接到配置 get 请求的适配器方法(findQuery 和 buildUrl)。
App.UserCustomRouteAdapter = DS.RESTAdapter.extend({
buildURL: function(type, id) {
return 'users/' + id + '/routes';
},
findQuery: function(store, type, query) {
return this.ajax(this.buildURL(type.typeKey, query.user_id), 'GET');
}
});
像这样设置请求的形式为“users/:user_id/routes”。
更新
我不得不改变App.UserCustomRoutesRoute
. 大多数时候user_id
尚未App.UserController
设置何时App.UserCustomRoutesRoute
被调用(当用户通过其相关地址('url#/users/:user_id/custom_routes')进入站点时)。所以我必须进行身份验证检查以回复user_id
如果在调用相关商店之前成功。
App.UserCustomRoutesRoute = Em.Route.extend({
model: function() {
var self = this;
console.log('user custom routes route');
return Em.$.get('loggedIn').then(function(promise) {
return self.store.find('user_custom_route', {user_id: promise.user_id});
});
}
});