2014-07-21 29 views
0

我試圖更新用戶數據,但是當我發出'PUT'請求時,Angular發送的是整個用戶$範圍而不是表單暴露的字段。AngularJS'PUT'請求。如何僅提交表單中的數據?

我正在使用工廠來獲取和放置數據。這裏是我的編輯功能

$scope.editStudent = function() { 
    Student.edit ({id: $stateParams.studentId}, $scope.Student, function (data) { 
     $location.path('/'); 
}); 
}; 

這不適合我,因爲我向服務器發送它自己的服務器端驗證,如果我要送全體學生範圍會有一些字段是空白的,因此不會通過驗證。

服務器允許我發送我需要更新的字段,所以我正在尋找一種方法來做到這一點。

下面是截圖,以幫助解釋我的問題:

回答

0

您可以編寫函數來檢查的形式定義的字段,然後只提交值。我認爲這個代碼是自我解釋的。

代碼段

app.controller('MainCtrl', function($scope, $http) { 
    $scope.user = { 
     "name": "Ali", 
     "company": "MSB", 
     getData: function(form) { 
      var data = {}; 
      angular.forEach(this, function(fieldValue, fieldName) { 
       if (!angular.isFunction(fieldValue) && form.$isSubmit(fieldName)) { 
        data[fieldName] = fieldValue; 
       } 
      }); 
      return data; 
     } 
    } 

    $scope.save = function() { 
     $scope.userForm.$isSubmit = function(fieldName) { 
      return !angular.isUndefined((this[fieldName])); 
     } 
     console.log($scope.user.getData($scope.userForm)); 
     $scope.data = $scope.user.getData($scope.userForm); 
     //$http.put('url', $scope.data) 
    } 
}); 

我創建了plunkr - http://plnkr.co/edit/6g5myBvBmWZ2IvKMLuvL?p=preview

*提示(或規則)

  1. 輸入名稱必須相同型號名稱
  2. 變化的getData功能你喜歡處理返回的數據。
相關問題