以下是DEMO
我不太明白这个指令定义:
.directive('ngFocus', [function() {
var FOCUS_CLASS = "ng-focused";
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attrs, ctrl) {
ctrl.$focused = false;
element.bind('focus', function(evt) {
element.addClass(FOCUS_CLASS);
scope.$apply(function() {ctrl.$focused = true;});
}).bind('blur', function(evt) {
element.removeClass(FOCUS_CLASS);
scope.$apply(function() {ctrl.$focused = false;});
});
}
};
}])
scope.$apply(function() {ctrl.$focused = true;});
看起来有点奇怪。 ctrl
不应与scope.signupform.name
相同吗?在HTML代码<div class="error" ng-show="signup_form.name.$dirty && signup_form.name.$invalid && !signup_form.name.$focused">
中,signup_form.name.$focused
已被监听。为什么我不能仅使用ctrl.$focused=true
而不包含scope.$apply
..
此外,我发现这个DEMO效果不好。预计错误消息将隐藏,直到该字段失去焦点。但是,在下图中,当字段仍然保持聚焦时显示错误消息..
有没有人对此有任何想法?谢谢!