次の角度コードがあります。
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 に対して実行されます。リクエストの URL は次のようになります。
http://localhost:8080/post?id=undefined
なぜ POST しようとしているの/post
ですか?また、理由はありid=undefined
ますか?他の例では?id=blah
、ID が指定されていない場合、リクエストに含まれていないように見えます。前もって感謝します。