Uncaught TypeError: angular.lowercase не является функцией
Uncaught TypeError: angular.lowercase не является функцией
эта ошибка в моем приложении 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)
7 ответов
Как вы можете видеть здесь, угловые устарели lowercase
Утилита метод.
Используемая вами библиотека еще не обновлена и поэтому совместима только с угловой версией до 1.6.7. Но поскольку вы получаете эту ошибку, используемая вами угловая версия, вероятно, выше.
Вы также можете
(A) Понизьте угол до 1.6.7 в вашем bower.json:
"dependencies": {
"angular": "1.6.7",
...
}
"resolutions": {
"angular": "1.6.7"
}
(B) Создайте простой обходной путь, добавив эти методы обратно так:
angular.lowercase = text => text.toLowerCase();
Убедитесь, что это сделано после загрузки angular, но до запуска вашего приложения.
Angular 1.7.* По-прежнему имеет строчную функцию, но переименован в $$ в нижний регистр. Это возможный обходной путь. Покупатель остерегается на основании угловой документации.
angular.module('MyApp').config(function() {
angular.lowercase = angular.$$lowercase;
});
Я хотел бы поделиться своими взглядами, чтобы это помогло другим людям, которые, как и я, борются, основная проблема заключается в том, что angularJS официально удалил строчные и прописные функции из своей библиотеки, чтобы люди, использующие textAngular-sanitize.js, получили эту ошибку, потому что textangular все еще имеет этот метод в своей библиотеке, которая будет через эту проблему.
Вы можете либо удалить textAngular-sanitize.js из своего проекта, либо включить код Ovidiu Dolha в свой app.js до загрузки angular.module, как показано ниже.
angular.uppercase=function(text){
return text.toUpperCase();
}
angular.lowercase=function(text){
return text.toLowerCase();
}
angular.module('sampleApp', ....)
Код, данный Овидиу Долой
angular.lowercase = text => text.toLowerCase();
Может быть написано как
angular.lowercase=function(text){
return text.toLowerCase();
}
Оба будут работать. Спасибо.
От ответа Овидиу Долхи я попал почти туда. Если вы посмотрите на предрестационную реализацию lowercase
функция, это немного больше. Эта реализация подкладки сделала свое дело для меня:
/**
* @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, как предлагается здесь.
npm install textangularjs
Я обнаружил аналогичную проблему при обновлении до angular 1.7.5, мое решение было обновить angular-sanitize, и проблема была исправлена. Угловой-Sanitize
Если вы используете angularjs с машинописью и линтером (в моем случае, tslint + standard), правильный обходной путь будет:
if (!angular.lowercase) (angular as any).lowercase = (text: string) => angular.isString(text) ? text.toLowerCase() : text
Я использую AngularJS v1.7.5. В моем контроллере я использовал приведенный ниже код для преобразования строки в нижний регистр:
function myCtrl($scope, $filter)
{
var sampleText = "THIS IS TEST";
var test = $filter('lowercase')(sampleText);
}
Введите $filter в контроллер и используйте его для преобразования в нижний регистр.