有没有一种方法可以在指令内部设置输入有效性?指令模板中存在的输入。
可以说我有模板:
<input type="text" ng-model="someObj.val" ng-change="check()">
我的指令就像:
.directive('myDir', function () { return { restrict: 'E', templateUrl: 'trmplate.html', link: function (scope) { someObj = {val: '123'}; scope.check = function () { var result = false; myInput.$setValidity(result); //this is didn't work, $setValidity not a function }; } } })
我不能用表单包装它,因为其背后的思想是允许用户将此输入包含在用户的表单中。
您需要检索与输入关联的NgModelController实例。然后调用$setValidity此对象,指定验证密钥(必需,最小长度,自定义密钥等)。它看起来像这样:
$setValidity
.directive('myDir', function() { return { restrict: 'E', template: '<input type="text" ng-model="someObj.val" ng-change="check()">', link: function(scope, element) { var modelController = element.find('input').controller('ngModel'); someObj = { val: '123' }; scope.check = function() { var result = false; modelController.$setValidity('myrequired', result); }; } } })
这里最重要的部分是如何获取NgModelController。下面的代码行正在处理它:
var modelController = element.find('input').controller('ngModel');