【问题标题】:Angurar.js set correct URL of the services with nested resourceAngurar.js 使用嵌套资源设置服务的正确 URL
【发布时间】:2014-08-03 13:14:02
【问题描述】:

我在后端创建了一个嵌套资源。 例如。 /resource/:id_resource/subResource/:id_subResource 我是 angular.js 的新手,我正在尝试找到最好的方法来做到这一点。 我使用了 services 和 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 严格绑定。 它有效,但我认为这不是最好的方法。 有什么想法吗?

【问题讨论】:

标签: angularjs api rest angular-resource


【解决方案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', {

之后,如果您的查询是您的模型,则只要参数 @ 匹配,您就可以更新。

SubResource.$update(function(res) {
   $location.path('SubResource/' + res._id);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 2011-08-11
    • 2015-01-19
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多