Angurar.js使用嵌套资源设置正确的服务URL

时间:2014-08-03 13:14:02

标签: angularjs api rest angular-resource

我在后端创建了一个嵌套资源。 例如。 /资源/: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严格关联。 它有效,但我认为这不是最好的方法。 有什么想法吗?

1 个答案:

答案 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);
});