Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.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
Javascript $httpParamSerializer的提供程序未知_Javascript_Angularjs - Fatal编程技术网

Javascript $httpParamSerializer的提供程序未知

Javascript $httpParamSerializer的提供程序未知,javascript,angularjs,Javascript,Angularjs,我遇到一个名为Angular.js的服务,并认为它对我的代码很有用。然而,当我尝试注入它时,Angular.js无法识别它,并抛出了一个“未知提供程序”错误 $httpParamSerializer不是一个内置服务吗(就像$http)?为什么会这样 我没有问题注入其他内置服务,例如$http,$httpBackend等 谢谢。这是最近添加的-因此,请检查并修复您的Angular版本: <script src="https://code.angularjs.org/1.4.0-rc.0/an

我遇到一个名为Angular.js的服务,并认为它对我的代码很有用。然而,当我尝试注入它时,Angular.js无法识别它,并抛出了一个“未知提供程序”错误

$httpParamSerializer
不是一个内置服务吗(就像
$http
)?为什么会这样

我没有问题注入其他内置服务,例如
$http
$httpBackend


谢谢。

这是最近添加的-因此,请检查并修复您的Angular版本:

<script src="https://code.angularjs.org/1.4.0-rc.0/angular.js">

我也需要这个,但目前我们无法升级,所以我只需要编写代码并创建提供者,然后将其添加到我的“通用”模块中。一旦我们升级了,我就把它删除

(function (angular) {

    'use strict';

    var serviceId = '$httpParamSerializer';

    var common = angular.module('common');

    common.provider(serviceId, $HttpParamSerializerProvider);


    function $HttpParamSerializerProvider() {

        function sortedKeys(obj) {
            return Object.keys(obj).sort();
        }

        function forEachSorted(obj, iterator, context) {
            var keys = sortedKeys(obj);
            for (var i = 0; i < keys.length; i++) {
                iterator.call(context, obj[keys[i]], keys[i]);
            }
            return keys;
        }

        function encodeUriQuery(val, pctEncodeSpaces) {
            return encodeURIComponent(val).
                       replace(/%40/gi, '@').
                       replace(/%3A/gi, ':').
                       replace(/%24/g, '$').
                       replace(/%2C/gi, ',').
                       replace(/%3B/gi, ';').
                       replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));
        }

        function serializeValue(v) {
            if (isObject(v)) {
                return isDate(v) ? v.toISOString() : toJson(v);
            }
            return v;
        }

        function isUndefined(value) { return typeof value === 'undefined'; }

        var isArray = Array.isArray;

        function isObject(value) {
            // http://jsperf.com/isobject4
            return value !== null && typeof value === 'object';
        }

        /**
     * @ngdoc service
     * @name $httpParamSerializer
     * @description
     *
     * Default {@link $http `$http`} params serializer that converts objects to strings
     * according to the following rules:
     *
     * * `{'foo': 'bar'}` results in `foo=bar`
     * * `{'foo': Date.now()}` results in `foo=2015-04-01T09%3A50%3A49.262Z` (`toISOString()` and encoded representation of a Date object)
     * * `{'foo': ['bar', 'baz']}` results in `foo=bar&foo=baz` (repeated key for each array element)
     * * `{'foo': {'bar':'baz'}}` results in `foo=%7B%22bar%22%3A%22baz%22%7D"` (stringified and encoded representation of an object)
     *
     * Note that serializer will sort the request parameters alphabetically.
     * */

        this.$get = function() {
            return function ngParamSerializer(params) {
                if (!params) return '';
                var parts = [];
                forEachSorted(params, function(value, key) {
                    if (value === null || isUndefined(value)) return;
                    if (isArray(value)) {
                        forEach(value, function(v, k) {
                            parts.push(encodeUriQuery(key) + '=' + encodeUriQuery(serializeValue(v)));
                        });
                    } else {
                        parts.push(encodeUriQuery(key) + '=' + encodeUriQuery(serializeValue(value)));
                    }
                });

                return parts.join('&');
            };
        };




    }
}(angular))
(函数(角度){
"严格使用",;
var serviceId=“$httpParamSerializer”;
var common=角度模块(“common”);
common.provider(serviceId,$HttpParamSerializerProvider);
函数$HttpParamSerializerProvider(){
功能分类键(obj){
返回Object.keys(obj.sort();
}
函数forEachSorted(对象、迭代器、上下文){
var键=分类键(obj);
对于(变量i=0;i
谢谢,这个解决方案对我也很有用。如果有人感兴趣,我举一个例子,说明你可以如何使用它,这是一项服务,但想法是一样的。