Javascript $httpParamSerializer的提供程序未知
我遇到一个名为Angular.js的服务,并认为它对我的代码很有用。然而,当我尝试注入它时,Angular.js无法识别它,并抛出了一个“未知提供程序”错误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
$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
谢谢,这个解决方案对我也很有用。如果有人感兴趣,我举一个例子,说明你可以如何使用它,这是一项服务,但想法是一样的。