這是一段判斷兩次密碼輸入是否相同的指令,咱們知道,require屬性是用來設定控制器的app
分別有前綴: ? , ^ , 前綴能夠加也能夠不加ui
好比 require: 'thisDirective',那麼require只會在當前指令中查找控制器this
require: "^parentDirective" , 那麼就會到上游指令中查找控制器spa
require: "?thatDirective" 若是在當前指令沒有找到控制器,就將null做爲link的第四個參數rest
以下段代碼code
app.directive('myPwdMatch', [function(){ return { restrict: "A", require: 'ngModel', link: function(scope,element,attrs,ctrl){ tageCtrl.$parsers.push(function(viewValue){ ctrl.$setValidity('pwdmatch', viewValue == ctrl.$viewValue); return viewValue; }); ctrl.$parsers.push(function(viewValue){ if(viewValue == tageCtrl.$viewValue){ ctrl.$setValidity('pwdmatch', true); return viewValue; } else{ ctrl.$setValidity('pwdmatch', false); return undefined; } }); } }; }]);
在此段代碼中require:'ngModel' , 這裏控制器是基於上游控制器的當前指令的控制器,上游控制器的內容,此指令控制器中都有可是沒法對上游控制器進行影響,blog
上下游控制器之間的關係應該是和原型同樣的,繼承
上游的控制器就好像底層的原型,下游的控制器是表層的原型,element
表層的原型可以使用底層原型的內容,同時,表層原型的修改不會影響到底層原型.原型
同一級的原型之間又彼此相互獨立,雖然都繼承自同一個底層控制器.