Uncaught TypeError: angular.lowercase is not a function
Uncaught TypeError: angular.lowercase is not a function
Uncaught TypeError: angular.lowercase is not a function
这个错误出现在我的 angularjs 应用程序中,整个应用程序都不是 运行。这是它在 textAngular-sanitize.js:413
.
中的显示
无法调试,我尝试使用与 angular.js 相同的版本,但没有成功。请为此提供解决方案。除了控制台中的这条错误消息,我没有什么可以分享的。
textAngular-sanitize.js:413 Uncaught TypeError: angular.lowercase is not a function
at parseEndTag (textAngular-sanitize.js:413)
at htmlParser (textAngular-sanitize.js:378)
at textAngular-sanitize.js:147
at textAngularSetup.js:443
at Object.invoke (angular.js:5093)
at angular.js:4892
at forEach (angular.js:374)
at createInjector (angular.js:4892)
at doBootstrap (angular.js:1923)
at bootstrap (angular.js:1944)
如您所见,here、angular 弃用了他们的 lowercase
util 方法。
您使用的库尚未更新,因此仅兼容 1.6.7 之前的 angular 版本。但是由于出现此错误,您使用的 angular 版本可能更高。
您可以
(A) 将 angular 降级到 1.6.7,在您的 bower.json:
"dependencies": {
"angular": "1.6.7",
...
}
"resolutions": {
"angular": "1.6.7"
}
(B) 通过将这些方法添加回来创建一个简单的解决方法:
angular.lowercase = text => text.toLowerCase();
确保在 angular 加载之后但在您的应用程序启动之前完成此操作。
我想分享我的观点,这样可以帮助像我一样挣扎的其他人,主要问题是 angularJS 正式从他们的库中删除了小写和大写函数,所以使用 textAngular 的人- sanitize.js 会得到这个错误,因为 textangular 在它的库中仍然有这个方法,它会解决这个问题。
您可以从项目中删除 textAngular-sanitize.js,也可以在 angular.module 加载之前 app.js 在 app.js 中包含 Ovidiu Dolha 代码如下。
angular.uppercase=function(text){
return text.toUpperCase();
}
angular.lowercase=function(text){
return text.toLowerCase();
}
angular.module('sampleApp', ....)
Ovidiu Dolha 给出的代码
angular.lowercase = text => text.toLowerCase();
可以写成
angular.lowercase=function(text){
return text.toLowerCase();
}
两者都可以。谢谢。
如果您使用 angularjs 打字稿和 linter(在我的例子中,tslint + 标准),正确的解决方法是:
if (!angular.lowercase) (angular as any).lowercase = (text: string) => angular.isString(text) ? text.toLowerCase() : text
Angular 1.7.* 仍然具有小写功能,但已重命名为 $$lowercase。这是一个可能的解决方法。 Buyer beware based on Angular documentation.
angular.module('MyApp').config(function() {
angular.lowercase = angular.$$lowercase;
});
Ovidiu Dolha 的回答让我差不多明白了。如果您查看 lowercase
函数的预弃用实现,它会更多一些。这个 shim 实现对我有用:
/**
* @brief Shim for textAngular in order to make it compatible with the latest
* version of angularjs
*/
function lowercase(string) {
return (typeof string === 'string') ? string.toLowerCase() : string;
}
// Angular deprecated the lowercase function as of v1.6.7. TextAngular hasn't
// updated to reflect this
angular.lowercase = lowercase;
另一种合适的解决方案是将 textAngular
替换为 testAngularJs
,如此处的 suggested。
npm install textangularjs
我在更新到 angular 1.7.5 时发现了类似的问题,我的解决方案是更新 angular-sanitize 并且问题已解决。
angular-sanitize
我正在使用 AngularJS v1.7.5。在我的控制器中,我使用以下代码将字符串转换为小写:
function myCtrl($scope, $filter)
{
var sampleText = "THIS IS TEST";
var test = $filter('lowercase')(sampleText);
}
在控制器中注入$filter并使用它来转换为小写。
Uncaught TypeError: angular.lowercase is not a function
这个错误出现在我的 angularjs 应用程序中,整个应用程序都不是 运行。这是它在 textAngular-sanitize.js:413
.
无法调试,我尝试使用与 angular.js 相同的版本,但没有成功。请为此提供解决方案。除了控制台中的这条错误消息,我没有什么可以分享的。
textAngular-sanitize.js:413 Uncaught TypeError: angular.lowercase is not a function
at parseEndTag (textAngular-sanitize.js:413)
at htmlParser (textAngular-sanitize.js:378)
at textAngular-sanitize.js:147
at textAngularSetup.js:443
at Object.invoke (angular.js:5093)
at angular.js:4892
at forEach (angular.js:374)
at createInjector (angular.js:4892)
at doBootstrap (angular.js:1923)
at bootstrap (angular.js:1944)
如您所见,here、angular 弃用了他们的 lowercase
util 方法。
您使用的库尚未更新,因此仅兼容 1.6.7 之前的 angular 版本。但是由于出现此错误,您使用的 angular 版本可能更高。
您可以
(A) 将 angular 降级到 1.6.7,在您的 bower.json:
"dependencies": {
"angular": "1.6.7",
...
}
"resolutions": {
"angular": "1.6.7"
}
(B) 通过将这些方法添加回来创建一个简单的解决方法:
angular.lowercase = text => text.toLowerCase();
确保在 angular 加载之后但在您的应用程序启动之前完成此操作。
我想分享我的观点,这样可以帮助像我一样挣扎的其他人,主要问题是 angularJS 正式从他们的库中删除了小写和大写函数,所以使用 textAngular 的人- sanitize.js 会得到这个错误,因为 textangular 在它的库中仍然有这个方法,它会解决这个问题。
您可以从项目中删除 textAngular-sanitize.js,也可以在 angular.module 加载之前 app.js 在 app.js 中包含 Ovidiu Dolha 代码如下。
angular.uppercase=function(text){
return text.toUpperCase();
}
angular.lowercase=function(text){
return text.toLowerCase();
}
angular.module('sampleApp', ....)
Ovidiu Dolha 给出的代码
angular.lowercase = text => text.toLowerCase();
可以写成
angular.lowercase=function(text){
return text.toLowerCase();
}
两者都可以。谢谢。
如果您使用 angularjs 打字稿和 linter(在我的例子中,tslint + 标准),正确的解决方法是:
if (!angular.lowercase) (angular as any).lowercase = (text: string) => angular.isString(text) ? text.toLowerCase() : text
Angular 1.7.* 仍然具有小写功能,但已重命名为 $$lowercase。这是一个可能的解决方法。 Buyer beware based on Angular documentation.
angular.module('MyApp').config(function() {
angular.lowercase = angular.$$lowercase;
});
Ovidiu Dolha 的回答让我差不多明白了。如果您查看 lowercase
函数的预弃用实现,它会更多一些。这个 shim 实现对我有用:
/**
* @brief Shim for textAngular in order to make it compatible with the latest
* version of angularjs
*/
function lowercase(string) {
return (typeof string === 'string') ? string.toLowerCase() : string;
}
// Angular deprecated the lowercase function as of v1.6.7. TextAngular hasn't
// updated to reflect this
angular.lowercase = lowercase;
另一种合适的解决方案是将 textAngular
替换为 testAngularJs
,如此处的 suggested。
npm install textangularjs
我在更新到 angular 1.7.5 时发现了类似的问题,我的解决方案是更新 angular-sanitize 并且问题已解决。 angular-sanitize
我正在使用 AngularJS v1.7.5。在我的控制器中,我使用以下代码将字符串转换为小写:
function myCtrl($scope, $filter)
{
var sampleText = "THIS IS TEST";
var test = $filter('lowercase')(sampleText);
}
在控制器中注入$filter并使用它来转换为小写。