我正在编写一个验证指令,它接受表单中元素的名称,并根据元素的值打印错误消息。
这是一个例子(live demo link here)
<form name="form" >
<input type="text" name="inp" ng-model="myval" ng-minlength="3">
<oversee watched="form.inp">
</form>
指令:
directive("oversee",function () {
return {
restrict: 'E',
scope: {
watched: '='
},
template: '<div ng-show="watched.$invalid">Error</div>',
link: function (scope, elm) {
console.log(scope.watched);
}
};
}
这就是事情。
我想更改错误消息以反映它正在观看的input
元素的当前长度。 (就像Stackoverflow在评论中所做的那样)
5 more to go...
所以我必须绑定到元素并在每个keyup
注意 - 我无法使用{{myval.length}}
,因为在表单/输入无效时模型未更新。
希望我明白我的问题。
谢谢!
答案 0 :(得分:2)
这是一个有效的example,您可以使用$ viewValue而不是model 注意:您还需要处理表单错误消息
angular.module("angtemp", [])
.controller("first", firstCtrl)
.directive("oversee",function () {
var LIMIT = 20;
return {
restrict: 'E',
scope: {
watched: '=',
val: '='
},
template: '<div ng-show="countToType">{{countToType}} more to go...</div>',
link: function (scope, elm) {
scope.$watch('val',function(newVal,oldVal){
if(!newVal) return;
scope.countToType = LIMIT-newVal.length;
});
}
};
});