我有以下角度代码:
var app = angular.module('app', ['ngResource']);
app.factory('Post', function ($resource) {
return $resource('/post', {}, {
query: { method: 'GET', url: '/post/get/:id', params: { id: '@id' } },
save: { method: 'POST', url: '/post/addorupdate/:id', params: { id: '@id' } },
delete: { method: 'POST', url: '/post/delete/:id', params: { id: '@id' } }
});
});
app.controller('appController', function ($scope, Post) {
$scope.createPost = function () {
var post = new Post({
title: "Test post",
body: "Test body.<br/ >Yay!"
});
post.$save();
};
});
标记看起来像这样:
<body data-ng-app="app">
<div data-ng-controller="appController">
<button ng-click="createPost()">Create Post</button>
</div>
</body>
当我单击该按钮时,它会尝试对服务器执行POST,但是对原始URL而不是特定于操作的URL执行POST。请求中的URL如下所示:
http://localhost:8080/post?id=undefined
知道为什么它试图只发布到/post
吗?另外,任何想法为什么id=undefined
?在其他示例中,如果未指定ID,则?id=blah
似乎不包含在请求中。提前谢谢。
答案 0 :(得分:1)
撰写此文时,a bug中的current version (1.0.8) of AngularJS为It was fixed in version 1.1.4。 ngResource
忽略了操作覆盖的url
属性。 release candidate (1.2.0)并且修复程序出现在最新的{{3}}。