2012-11-25 56 views
0

以下是我定義我的$資源:

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創建了一些輸入,看起來雙向數據綁定可以正常工作。當我在$scope.saveUser函數中調用console.log($scope.user)時,它會完全按照我的預期返回用戶對象,並在瀏覽器中進行更改。但是,在我的Node後端,我記錄了在PUT請求中收到的對象,並且它不反映我在瀏覽器中所做的任何更改,它看起來與原始相同。點擊瀏覽器中的按鈕後,數據將重置爲其原始值。到底是怎麼回事?爲什麼它不會發送我在瀏覽器中輸入的更新數據?

+0

你可以發佈Node.js控制檯的輸出信息,它涉及調用saveUser時收到的'PUT'嗎?我有幾個想法,但我不確定要走哪個方向。 :) –

+0

當然。在編輯表單並點擊Save(調用'saveUser')後,在瀏覽器中輸入console.log($ scope.user)': '[14:28:56.097]({__v:0,_id: 「50b1a966c12ef0c426000007」,密碼: 「新修改過密碼」})' 這裏就是節點日誌,'的console.log(req.user)': '{__v:0,_id: 「50b1a966c12ef0c426000007」,密碼:「originalPassword 「})' –

+0

我的意思是,這並沒有給你任何比問題更多的信息。你是否想要全部的PUT請求和所有的頭文件和垃圾?這真的很長。 –

回答

2

根據您的評論:

這裏是console.log($scope.user)從瀏覽器我編輯的形式和命中保存(它調用saveUser)後:

{__v:0, _id:"50b1a966c12ef0c426000007", password:"NEW MODIFIED PASSWORD"} 

這裏就是節點日誌,console.log(req.user)

{__v:0, _id:"50b1a966c12ef0c426000007", password:"originalPassword"}) 

req.user通常是附加到請求對象的對象,用於指定當前登錄的用戶是誰,並且通常由中間件管理。由於您要求PUT請求,因此您需要在req.body中查找數據。

相關問題