Как я могу получить доступ к ngModel из директивы контроллера

function prMySelects() {
  var ddo = {
    restrict: 'E',
    templateUrl: 'template.html',
    require: '?ngModel',
    scope: {
      ngModel: '='
    },
    controller: prMySelectsController,
    controllerAs: 'vm',
    bindToController: true
  };
  return ddo;
}

function prMySelectsController($locale) {
   ...
}

Мне нужно сделать некоторые проверки внутри контроллера директив и установить ngModel.$ SetValidity('some', false), но получаю ngModel is not defined ошибка. Внедрение ngModel не помогло...

PS Я знаю, что могу получить к нему доступ в link, но возможно ли достичь контроллера ngModel в директиве controller?

1 ответ

Такого рода функциональность лучше всего выполнять внутри функции ссылки для директивы.

function prMySelects() {
    return {
       restrict: 'E',
       require: '?ngModel',
       link: function(scope, element, attributes, ngModel) {
          scope.theModel = ngModel;
       },
       controller: function() {
           var vm = this;
            vm.theModel.$setViewValue...
       }
    }
}

В этом случае вы фактически подключаетесь к контроллеру ngModel, и вам не обязательно указывать его в области видимости.

Другие вопросы по тегам