我目前正在将开发环境从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,我把所有的希望寄托在你身上!
答案 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;
}]);