簡體   English   中英

AngularJS'PUT'請求。 如何只提交表格中的數據?

[英]AngularJS 'PUT' requests. How to submit ONLY the data in form?

我正在嘗試更新用戶數據,但是當我發出“ PUT”請求時,Angular將發送整個用戶$ scope,而不僅僅是發送表單公開的字段。

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

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

這對我來說不起作用,因為我要發送的服務器是它自己的服務器端驗證,並且如果我要發送整個學生范圍,則某些字段將為空白,因此不會通過驗證。

服務器允許我僅發送需要更新的字段,因此我正在尋找一種實現此目的的Angular方法。

這是一個截圖,可以幫助解釋我的問題:

您可以編寫函數來檢查表單中定義的字段,然后僅提交值。 我認為代碼是不言自明的。

代碼段

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函數來處理要返回的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM