Контроллер ngModel, $$ updateEventHandler не определен

В настоящее время я портирую среду разработки с gulp на webpack без angularjs и реагирую на гибридное приложение.

приложение огромное. На данный момент 10мб файлов.

но в настоящее время я сталкиваюсь с некоторыми проблемами. эта строка: this.$$updateEventHandler = this.$$updateEventHandler.bind(this);, которая находится внутри основного файла angular.js.

и ошибка выглядит так:

TypeError: Cannot read property 'bind' of undefined at ngModel.controller.NgModelController (angular.js:29413)

который я интерпретирую как $$ updateEventHandler, это тот, который не определен, и это также тот случай, когда я помещаю точку останова в строку и проверяю ее внутри devtools.

Я также пытался обновить angularjs, и сейчас я использую версию 1.7.0, прежде чем я попробовал как 1.2, 1.3, 1.4.5 и 1.6.10, но одна и та же ошибка возникает повсюду.

Кроме того, я искал в Интернете, но не смог найти ничего, связанного с этим, что заставляет меня думать, что это просто глупая ошибка, совершенная мной где-то, но я пытался решить ее сейчас в течение 6 часов, и теперь я положил все Мои надежды на вас, дорогие stackoverflowers!

Добавьте директиву ng-strict-di в тот же элемент, что и ng-app, чтобы выбрать строгий режим DI. Для получения дополнительной информации см. Руководство разработчика AngularJS - Использование строгого внедрения зависимостей.

georgeawg 01.06.2018 21:12
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
1
158
1

Ответы 1

В моем случае у меня после обновления возникла такая ошибка в декораторе:

$provide.decorator('ngModelDirective', ['$delegate', function($delegate) {
var ngModel = $delegate[0], controller = ngModel.controller;
ngModel.controller = ['$attrs', '$injector', function( attrs, $injector) {
  attrs.$set('name', 'custom');
  $injector.invoke(controller, this, {
    '$attrs': attrs
  });
}];
return $delegate;

}]);

Вы должны прикрепить прототип контроллера NGModel к контексту. Вы можете использовать Object.setPrototypeOf (obj, prototype).

 $provide.decorator('ngModelDirective', ['$delegate', function($delegate) {
var ngModel = $delegate[0], controller = ngModel.controller;
ngModel.controller = ['$attrs', '$injector', function( attrs, $injector) {
  attrs.$set('name', 'custom');
  $injector.invoke(controller, Object.setPrototypeOf(this, controller.prototype), {
    '$attrs': attrs
  });
}];
return $delegate;

}]);

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