directive指令里的require

 

这是一段判断两次密码输入是否相同的指令,咱们知道,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

表层的原型可以使用底层原型的内容,同时,表层原型的修改不会影响到底层原型.原型

同一级的原型之间又彼此相互独立,虽然都继承自同一个底层控制器.

相关文章
相关标签/搜索