我已經通過參考來自angularjs的官方文檔正確地完成了它。 但是在指令的鏈接方法,當我使用$setValidity()
方法設置的有效性,它不會反映在使用{{formname.controlname.$error.validationErrorKey}}
在angularjs中創建自定義指令
請幫我跟蹤誤差或錯誤,我做圖的一部分。
在此先感謝
<form name="form" novalidate>
URL <input type="text" ng-model="myURL" name="myURL" my-url /> {{form.myURL.$error.myUrlError}}
<span class="errorMessage" ng-show="form.myURL.$dirty && form.myURL.$error.myUrlError">
please enter correct url
</span>
</form>
validationModule.directive("myUrl", function($window) {
//return Directive Definition Object (DDO)
return{
restrict:"A",
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
elm.bind('blur',function() {
if (ctrl.$isEmpty(ctrl.$viewValue)) {
console.log('isEMpty-' + new Date());
ctrl.$setValidity("myUrlError", true);
} else {
var URL_REGEXP= /https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,}/;
if (URL_REGEXP.test(ctrl.$viewValue)) {
console.log("valid-" + new Date());
ctrl.$setValidity("myUrlError", true);
} else {
console.log("invalid-" + new Date());
ctrl.$setValidity("myUrlError", false);
}
}
}); //end if 'blur' event listener
}//end of link function
};//end of DDO
});