TypeError: Невозможно прочитать свойство 'bind' из неопределенного в Controller.NgModelController - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь обновить свой проект с 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'))

TestCtrl. js

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

      ....
}];

test. html

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

Эта проблема в основном возникает в полях ввода формы где для привязки дана ng-модель.

Спасибо за помощь.

1 Ответ

0 голосов
/ 27 февраля 2020

Я выяснил, что проблема связана с одной из сторонних angular библиотек форм, где она переопределяет поведение ngmodel.

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

После добавления этого блока проблема привязки исчезла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...