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 в контроллер и используйте его для преобразования в нижний регистр.

Другие вопросы по тегам