$resourceを定義した方法は次のとおりです。
app.factory('User', function($resource){
return $resource('/api/user', {}, {
get: { method:'GET'},
update: { method:'PUT'},
})
})
そして、これが私のコントローラーです:
function SettingsCtrl($scope, $http, User) {
$scope.user = User.get(
{}, //Params
function(data) { //Successfully received data
},
function(data) { //Failure to receive data
}
);
$scope.saveUser = function() {
$scope.user.$update();
console.log($scope.user);
};
}
コントローラの上部でのUser.get()
呼び出しは、バックエンドからデータを正しく取得しています。私のHTMLでは、$scope.saveUser
関数を呼び出すボタンを作成し、を使用していくつかの入力を作成しng-model
ました。双方向のデータバインディングが正しく機能しているように見えます。この関数を呼び出すconsole.log($scope.user)
と$scope.saveUser
、ブラウザーで行った変更を加えて、期待どおりにユーザーオブジェクトが返されます。ただし、ノードバックエンドでは、PUTリクエストで受信したオブジェクトをログに記録します。これは、ブラウザーで行った変更を反映しておらず、元のオブジェクトと同じように見えます。ブラウザのボタンをクリックすると、データが元の値にリセットされます。何が起こっている?ブラウザに入力した更新データが送信されないのはなぜですか?