directive指令里的require


 
        

這是一段判斷兩次密碼輸入是否相同的指令,我們知道,require屬性是用來設定控制器的

分別有前綴: ? , ^ , 前綴可以加也可以不加

比如 require: 'thisDirective',那么require只會在當前指令中查找控制器

require: "^parentDirective" , 那么就會到上游指令中查找控制器

require: "?thatDirective"  如果在當前指令沒有找到控制器,就將null作為link的第四個參數

如下段代碼

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' ,  這里控制器是基於上游控制器的當前指令的控制器,上游控制器的內容,此指令控制器中都有但是無法對上游控制器進行影響,

上下游控制器之間的關系應該是和原型一樣的,

上游的控制器就好像底層的原型,下游的控制器是表層的原型,

表層的原型能夠使用底層原型的內容,同時,表層原型的修改不會影響到底層原型.

同一級的原型之間又彼此相互獨立,雖然都繼承自同一個底層控制器.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM