繁体   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