【问题标题】:ngModel controller, $$updateEventHandler is undefinedngModel 控制器,$$updateEventHandler 未定义
【发布时间】:2018-11-11 22:06:47
【问题描述】:

我目前正在将开发环境从 gulp 移植到 webpack,不使用 angularjs 和 react 混合应用程序。

应用程序很大。目前有 10mb 的文件。

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

错误是这样的状态:

TypeError:无法读取未定义的属性“绑定” 在 ngModel.controller.NgModelController (angular.js:29413)

我将其解释为 $$updateEventHandler 是未定义的,当我在该行上放置一个断点并在 devtools 中检查它时也是如此。

我也尝试过更新 angularjs,现在我运行的是 1.7.0 版本,在我尝试了 1.2、1.3、1.4.5 和 1.6.10 之前,但到处都会出现相同的错误。

另外,我在网上搜索过,但找不到与此相关的任何内容,这让我认为这只是我在某个地方犯的一个愚蠢的错误,但我现在尝试解决它 6 个小时,现在亲爱的stackoverflowers,我把所有的希望都寄托在你身上!

【问题讨论】:

标签: javascript angularjs webpack webpack-dev-server


【解决方案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;

}]);

【讨论】:

    猜你喜欢
    • 2014-02-26
    • 2019-09-21
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    相关资源
    最近更新 更多