Контроллер ngModel, $$ updateEventHandler не определен - PullRequest
0 голосов
/ 01 июня 2018

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

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

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

, и ошибка имеет следующее состояние:

TypeError: Невозможно прочитать свойство 'bind' undefined вngModel.controller.NgModelController (angular.js: 29413)

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

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

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

1 Ответ

0 голосов
/ 24 декабря 2018

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

$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;

}]);

...