如何在 AngularJS $resource 中使用路径变量而不是请求参数

Posted

技术标签:

【中文标题】如何在 AngularJS $resource 中使用路径变量而不是请求参数【英文标题】:How to use path variable instead of request parameter with AngularJS $resource 【发布时间】:2012-07-20 08:08:24 【问题描述】:

可能有一种简单的方法可以做到这一点,但我似乎无法找到方法。

当我点击下面显示的删除按钮时,角度会点击以下网址:

http://localhost:8080/rest/managedCourse?id=3

我怎样才能让它点击传递路径变量而不是这样的请求参数:

http://localhost:8080/rest/managedCourse/3

这是我的html

<table>
    <tr ng-repeat="course in page.content">
        <td>course.title</td>
        <td>course.description</td>
        <td>course.creditValue</td>
        <td><button ng-click="remove(course.id)">Delete</button></td>
    </tr>
</table>

这是我的控制器:

function ManagedCourseController($scope, $resource) 

    var ManagedCourse = $resource("rest/managedCourse/:courseId", courseId:'@id');

    $scope.page = ManagedCourse.getPage("page.page": "0", "page.size": "3", "page.sort": "title", "page.sort.dir": "asc");


    $scope.create = function (managedCourse) 
        ManagedCourse.create(managedCourse);
    

    $scope.remove = function (courseId) 
        ManagedCourse.remove(id:courseId);
    

【问题讨论】:

【参考方案1】:
function ManagedCourseController($scope, $resource) 

    var ManagedCourse = $resource("rest/managedCourse/:courseId/:id", 
       courseId:'@id');
    ...

应该这样做

【讨论】:

那么 /:id 部分会被忽略吗?我只是想了解它是如何工作的。 虽然这似乎可行,但我也想知道它是如何工作的。 AngularJS documentation about $resource 似乎无法解释这种行为。它记录了有关多余值的文档作为查询参数添加,但没有记录如何跳过 URL 模板的部分 您将如何为自定义操作执行此操作? 我发现上面的例子令人困惑。可以假设@id 与第二个路径参数有关。 我成功地使用了带有路径参数的 $resource,而根本没有使用 courseId:'@id'。我想知道为什么我看到的文档和示例都夸耀这一点。

以上是关于如何在 AngularJS $resource 中使用路径变量而不是请求参数的主要内容,如果未能解决你的问题,请参考以下文章

如何将标头动态传递给 angularjs 的 $resource

AngularJS $resource 在 Web Api 中搜索项目的工作示例

如何使用 AngularJS 的 $resource 和 spring rest 控制器获取布尔值

了解 AngularJS 的 $resource

Angularjs多个HTTP POST请求导致net :: ERR_INSUFFICIENT_RESOURCES

AngularJS:如何观察服务变量?