之所以要写这篇文章,是因为要纠正《Angular 权威教程 》这本书中的关于ngMessage中的写法错误。对于ngMessages这个插件的用法其实还是比较容易的。但比较坑爹的是学习这块最开始的参照教程就是这本书,它里面的写法又是错误的。百度查找了一些国人写的文章,要么没有写到那个部分,要么也是照抄而来。谷歌不了,用bing搜了一下,老外的文章。答案有了。就是我这篇文章中要写的重点。
对了,本篇文章的中的重点是讲述ngMessages中自定义错误指令信息的部分。我们先看《权威教程》这本书的写法:
app.directive('ensureUnique', function ($http) {
return {
require: 'ngModel',
link: function (scope, element, attrs, ctrl) //错误之处:ctrl应该修改为ngModel,对于我等新手又怎会明白呢
{
var url = attrs.ensureUnique;
ctrl.$parsers.push(function(val) { //同样的错误:ctrl应该修改为ngModel
if (!val || val.length === 0) {
return;
}
ngModel.$setValidity('checkingAvailability', true);
ngModel.$setValidity('usernameAvailablity', false);
$http({
method: 'GET',
url: url,
params: {
username: val
}
}).success(function() {
ngModel.$setValidity('checkingAvailability', false);
ngModel.$setValidity('usernameAvailablity', true);<