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)

Ответы

Ответ 1

Как вы можете видеть здесь, угловатые устарели их метод использования 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();

Убедитесь, что это сделано после загрузки углов, но перед запуском приложения.

Ответ 3

Овидиу Долха ответил, что я почти там. Если вы посмотрите на реализацию функции 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;

Ответ 4

Я хотел бы поделиться своими взглядами, чтобы он помог другим людям, которые борется, как я, главная проблема заключается в том, что 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();
     }

Оба будут работать. Спасибо.

Ответ 5

Я обнаружил аналогичную проблему при обновлении до angular 1.7.5, мое решение было обновить angular-sanitize, и проблема была исправлена. Угловой-Sanitize

Ответ 6

если вы используете angularjs с машинописным текстом и linter (в моем случае, tslint + standard), правильным решением будет следующее:

if (!angular.lowercase) (angular as any).lowercase = (text: string) => angular.isString(text) ? text.toLowerCase() : text

Ответ 7

Другим подходящим решением будет замена textAngular на testAngularJs, как предлагается здесь.

npm install textangularjs

Ответ 8

Я использую AngularJS v1.7.5. В моем контроллере я использовал приведенный ниже код для преобразования строки в нижний регистр:

function myCtrl($scope, $filter)
{
    var sampleText = "THIS IS TEST";
    var test = $filter('lowercase')(sampleText);
}

Введите $ filter в контроллер и используйте его для преобразования в нижний регистр.

Ответ 9

Куда конкретно приведет кодовое решение от Ovidiu Dolha?

Решение кода: angular.lowercase = text => text.toLowerCase();

Мой репозиторий Github можно найти здесь: https://github.com/whitneylubin/getHousingMiami