我在后端创建了一个嵌套资源。 例如。 /资源/:id_resource /子资源/:id_subResource 我是angular.js的新手,我正在努力寻找最佳方法。 我已经使用了服务和 angular-resource 组件,我需要了解如何使用/ resource /:id_resource /传递URL的第一部分,这是正确的格式(不是正常参数)。
projectsServices.factory('SubResource', ['$resource','$location',
function($resource, $location){
return $resource($location.$$path , {}, {
query: {method:'GET', params:{}, isArray:true}
});
}]);
这基本上与路线有关
.when('/**resource**/:id_resource/**subResource**/:id_subResource', {
templateUrl: '/partials/[...].html',
controller: '[...]DetailsCtrl'
所以请求API的URL与$ location严格关联。 它有效,但我认为这不是最好的方法。 有什么想法吗?
答案 0 :(得分:1)
我认为你正在寻找的只是$routeParams
- 就像。
factory('SubResource', ['$resource', function ($resource){
return $resource('/api/:param_one/sub/:param_two',
{param_one:"@_id", param_two: "@id_sub"},
{
update: {
method: 'PUT'
}
});
}]);
然后在您的控制器中
app.controller('Ctrl',function($scope, $routeParams
...
SubResource.get({
param_one: $routeParams.thingId,
param_two: $routeParams.thingId_sub
},
function(data){...});
从您的路线中拉出参数
.when('thing/:thingId/sub/:thingId_sub', {
之后,如果您的查询是您的模型,您可以更新参数@ matches。
SubResource.$update(function(res) {
$location.path('SubResource/' + res._id);
});