我有一个指令,我正在使用验证表单域。我想动态添加验证与指令。下面是我的指令看起来像:如何使用angularjs指令为表单验证动态添加属性?
app.directive('validatedInput', function($compile) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var constraints = {
'ng-maxlength' : 10,
'data-required': ''
}
angular.forEach(constraints, function(value, key) {
element.attr(key, value);
}
$compile(element)(scope);
}
}
}
这里是我的标记:
<input type='number' name='fieldName' ng-model='data.test' validated-input></input>
所以基本上我想要的是该指令ng-maxlength=10
和data-required=''
添加到我的输入元素,这样的验证可以工作(这是一个微不足道的案例;将来我会计划使用服务从后端获取约束对象)。问题是,该指令似乎将属性添加到DOM,但验证不起作用。换句话说,如果我使用我的浏览器的开发工具检查HTML,标记看起来是正确的,但功能不存在。有什么想法吗?
非常感谢
似乎'$ compile'服务是相关的:http://docs.angularjs.org/api/ng.$compile – Cherniv
我试图添加'$ compile(element)(scope);'在forEach循环,我得到一个控制台消息,说'$编译不是一个函数' – user3025812
'$编译不是一个函数'很可能是因为你没有注入'$ compile'在指令 – charlietfl