我是angularjs的新手。我已经从此链接中看到了这段代码。对我来说很好。但是我不知道它是如何工作的?从哪里来的呢?
有人可以解释吗?
var app = angular.module('plunker', []);
var ValidSubmit = ['$parse', function ($parse) {
return {
compile: function compile(tElement, tAttrs, transclude) {
return {
post: function postLink(scope, element, iAttrs, controller) {
var form = element.controller('form');
form.$submitted = false;
var fn = $parse(iAttrs.validSubmit);
element.on('submit', function(event) {
scope.$apply(function() {
element.addClass('ng-submitted');
form.$submitted = true;
if(form.$valid) {
fn(scope, {$event:event});
}
});
});
scope.$watch(function() { return form.$valid}, function(isValid) {
if(form.$submitted == false) return;
if(isValid) {
element.removeClass('has-error').addClass('has-success');
} else {
element.removeClass('has-success');
element.addClass('has-error');
}
});
}
}
}
}
}]
app.directive('validSubmit', ValidSubmit);
这是该指令正在执行的要点:
分配了一个函数来处理该元素的“ onsubmit”事件。
看起来该伪指令旨在作为一个属性,它接受一个函数作为其值。该函数被检索:
var fn = $parse(iAttrs.validSubmit);
设置了onsubmit的事件处理程序:
element.on('submit', function(event) {
然后,如果表单有效,则调用该函数:
if(form.$valid) {
fn(scope, {$event:event});
指令监视包含元素的表单的状态(有效或无效)
。$ watch函数用于在表单在有效和无效之间切换时触发事件:
scope.$watch(function() { return form.$valid}
无论何时提交表单,都会将CSS类应用于元素
当表单的有效性更改时,(has-error
或has-success
CSS类)将应用于元素(基于表单是否有效)。
请注意,由于该函数开始处的guard子句,仅在提交表单时才添加/删除CSS类:
if(form.$submitted == false) return;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句