-1

我试图将我的项目从 angularjs 版本 1.2 更新到 1.7.9。但是我直到 1.5 才发现任何问题。但从 1.6 开始,我收到以下错误:

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

@angular.js:29413 => this.$$updateEventHandler = this.$$updateEventHandler.bind(this);

包.json

"dependencies": {
  "angular": "1.7.0",
  "angular-animate": "1.7.0",
  "angular-sanitize": "1.7.0",
  "angular-ui-router": "0.3.2",
  "angular-form-lib": "2.2.1",
  ...
}

index.js

var moduleName = module.exports = 'test';

angular
  .module(moduleName, [
    require('angular-ui-router'),
    require('../api/')
  ])
  .config(['$stateProvider', function ($stateProvider) {
    $stateProvider.state('test', {
      url: '/test',
      template: require('./xx.html'),
      controller: 'TestController as vm'
    });
  }])
  .controller('TestController', require('./TestCtrl'))

测试Ctrl.js

module.exports = ['$scope','$rootScope',
  function ('$scope','$rootScope') {
      var vm = this;
          vm.toggle = false;

      ....
}];

测试.html

<input type="radio" name="test_toggle" id="test-toggle-1" 
                 ng-model="vm.toggle" ng-value="true"
                 ng-change="vm.clickHandler('test')">

此问题主要出现在为绑定提供 ng-model 的表单输入字段中。

谢谢您的帮助。

4

1 回答 1

0

我发现问题出在第三方角度表单库之一,它覆盖了 ngmodel 行为。

$injector.invoke(controller, Object.setPrototypeOf(this, controller.prototype), {
   '$attrs': attrs,
   '$scope': scope,
   '$element': element
});

添加此块后,绑定问题消失了。

于 2020-02-27T05:21:32.787 回答