directive - 如何从指令 Controller 访问 ngModel

标签 directive angularjs-ng-model controlleras

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

function prMySelectsController($locale) {
   ...
}

我需要在指令 Controller 内部做一些检查并设置 ngModel.$setValidity('some', false),但出现 ngModel is not defined 错误。注入(inject) ngModel 没有帮助...

PS 我知道我可以在 link 中访问它,但是是否可以在指令 controller 中访问 ngModel Controller ?

最佳答案

这种功能最好在指令的链接函数中完成。

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 Controller ,并且不需要您在作用域中实际指定它。

关于directive - 如何从指令 Controller 访问 ngModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37146933/

相关文章:

javascript - 使用 AngularJS 中的表单对 ControllerAs 进行单元测试

javascript - 同步两个具有不同模型的文本框

javascript - 具有 javascript 模型和 ngModel 的 Angular 组件

javascript - 将点击事件绑定(bind)到指令模板内的元素

javascript - AngularJS 组件 - 带有 Typescript 的 ngModelController

javascript - Angular 选择 ng-selected 不起作用(使用 <option ng-repeat>)

javascript - 从模板 angularJs 中的 Controller 填充 id 属性的值

javascript - 如何在指令中获取 {{text}}?

angular - 如何在模板中键入检查 Angular Directive 输入分配类型?