ngModel控制器,$$ updateEventHandler未定义

时间:2018-06-01 18:10:13

标签: javascript angularjs webpack webpack-dev-server

我目前正在将开发环境从gulp移植到带有angularjs的webpack并对混合应用程序进行反应。

应用程序非常庞大。目前有10mb的文件。

但我目前遇到了一些问题。 这一行:this.$$updateEventHandler = this.$$updateEventHandler.bind(this);位于主angular.js文件中。

并且错误是这样的状态:

  

TypeError:无法读取未定义的属性“bind”       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,我把所有的希望寄托在你身上!

1 个答案:

答案 0 :(得分:0)

就我而言,更新后我在装饰器中遇到了这样的错误:

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

}]);