Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS$resource JSON字段名转换_Json_Api_Angularjs_Camelcasing - Fatal编程技术网

AngularJS$resource JSON字段名转换

AngularJS$resource JSON字段名转换,json,api,angularjs,camelcasing,Json,Api,Angularjs,Camelcasing,我正在从事一个AngularJS项目,该项目使用API来处理数据。现在,我正在使用$resource实现“创建”功能。除了命名转换之外,一切都进行得很顺利:我使用camelCase,但API只接受snake\u case。 有没有办法将这些密钥自动转换为snake_case 服务: services.factory('Salons', ['$resource', function ($resource) { return $resource('/salons/:slug'

我正在从事一个AngularJS项目,该项目使用API来处理数据。现在,我正在使用$resource实现“创建”功能。除了命名转换之外,一切都进行得很顺利:我使用camelCase,但API只接受snake\u case。 有没有办法将这些密钥自动转换为snake_case

服务:

services.factory('Salons', ['$resource',
    function ($resource) {
        return $resource('/salons/:slug', {
            slug: "@slug"
        });
    }
]);
控制器:

controllers.controller('CreateSalonController', ['$scope', 'Salons',
    function ($scope, Salons) {
        $scope.submit = function() {
            Salons.save(this.salon);
        };
    }
]);
controllers.controller('CreateSalonController', ['$scope', 'Salons', 'Util',
    function ($scope, Salons, Util) {
        $scope.submit = function() {
            Salons.save(Util.objectKeysToSnakeCase(this.salon));
        };
    }
]);
视图:


名字
...

我没有找到任何内置解决方案,因此我实施了一个:

新服务:

services.factory('Util', function () {
        var Util = {
            stringToSnakeCase: function (input) {
                return input.replace(/([0-9A-Z])/g, function ($1) {
                    return "_" + $1.toLowerCase();
                });
            },
            objectKeysToSnakeCase: function (input) {
                var output = {};
                _.each(input, function (val, key) {
                    output[Util.stringToSnakeCase(key)]
                        = _.isObject(val) ? Util.objectToSnakeCase(val) : val;
                });
                return output;
            }
        };
        return Util;
    }
);
以及更新的控制器:

controllers.controller('CreateSalonController', ['$scope', 'Salons',
    function ($scope, Salons) {
        $scope.submit = function() {
            Salons.save(this.salon);
        };
    }
]);
controllers.controller('CreateSalonController', ['$scope', 'Salons', 'Util',
    function ($scope, Salons, Util) {
        $scope.submit = function() {
            Salons.save(Util.objectKeysToSnakeCase(this.salon));
        };
    }
]);

我假设您正在使用RESTAPI。你到底在哪里面临案件的问题?你能举例说明吗?谢谢你的评论,我更新了问题。查看视图:data ng model=“salon.contactFirstName”当它被发送到API时,应该是snake_的情况。在最坏的情况下,我将在视图中重新格式化它。