0

我有以下论坛的基本 API:

  • POST /topics(创建新主题)
  • GET /topics(获取所有主题)
  • GET /topics/1(获取 ID 为“1”的主题)

我想添加以下内容:

  • POST /topics/1(添加对 ID 为“1”的主题的回复)

我尝试了以下代码(相关摘录),但没有奏效:

.controller('TopicReplyController', function ($scope, $routeParams, Topics) {
    'use strict';

    var topicId = Number($routeParams.topicId);

    Topics.get({topicId: topicId}, function (res) {
        $scope.topic = res;
    });

    $scope.postReply = function () {
        var newPost = new Topics({
            topicId: topicId
        });

        newPost.text = $scope.postText;
        newPost.$save(); // Should post to /topics/whatever, not just /topics
    };
})
.factory('Topics', function ($resource) {
    'use strict';

    return $resource('/topics/:topicId', {topicId: '@id'});
});

它只是向 发出请求/topics,这是行不通的。

有什么想法可以让它发挥作用吗?

4

1 回答 1

1

$resource 文档

如果参数值以 @ 为前缀,则从数据对象中提取该参数的值(对非 GET 操作有用)。`

您正在指定topicId将是id您正在使用的对象的。

$resource('/topics/:topicId', {topicId: '@id'});
                            // ^^^^^^^^^^^^^^
                            // Here is where you are mapping it

您想要传递id: topicId,以便它将映射idtopicIdURL。

var newPost = new Topics({
    id: topicId
});
于 2014-01-28T16:23:30.610 回答