我有一个论坛的基本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
发出请求,但这不起作用。
我有什么想法可以让它发挥作用吗?
答案 0 :(得分:1)
如果参数值以@为前缀,则从数据对象中提取该参数的值(对于非GET操作非常有用).`
您指定topicId
将是您正在使用的对象的id
。
$resource('/topics/:topicId', {topicId: '@id'});
// ^^^^^^^^^^^^^^
// Here is where you are mapping it
您希望传递id: topicId
,以便将id
映射到网址中的topicId
。
var newPost = new Topics({
id: topicId
});