我有一個指令,我正在使用驗證表單域。我想動態添加驗證與指令。下面是我的指令看起來像:如何使用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