AngularJS 指令中的require

  require参数可以被设置为字符串或数组,字符串代表另外一个指令的名字。require会将控制器注入到其值所指定的指令中,并作为当前指令的链接函数的第四个参数
字符串或数组元素的值是会在当前指令的作用域中使用的指令名称。指令得require参数的值可以用下面的前缀进行修饰,这会改变查找控制器时的行为:

?     在当前指令中没有找到所需要的控制器,会将null作为传给link函数的第四个参数。

^     指令会在上游的指令链中查找require参数所指定的控制器

?^    将前面两个选项的行为组合起来,选择地加载需要的指令并在父指令链中进行查找

没有前缀   指令将会在自身所提供的控制器中进行查找,如果没有找到任何控制器(或具有指定名字的指令)就抛出一个错误

  例子:

angular.module('myApp',[])  
    //定义第一个指令 bookList  
    .directive('bookList',function(){  
        return {  
            restrict:'ECAM',  
            controller:function($scope){  
                $scope.books=[  
                    {name:'php'},{name:'javascript'},{name:'java'}  
                ];  
                this.addBook=function(){  
                    $scope.$apply(function(){  
                        $scope.books.push({name:'Angularjs'});  
                    });  
                }  
            },  
            controllerAs:'bookListController',  
            //这个template中使用了第二个指令bookAdd  
            template:'<div><ul><li ng-repeat="book in books">{{ book.name }}</li></ul> <book-add></book-add> </div>',  
            replace:true  
        }  
    })  
    //定义第二个指令 bookAdd  
    .directive('bookAdd',function(){  
        return{  
            restrict:'ECAM',  
            require:'^bookList',  //这是个指令名
            template:'<button type="button">添加</button>',  
            replace:true,  
            link:function(scope,iElement,iAttrs,bookListController){  //这里引用了bookList指令的控制器  
                iElement.on('click',bookListController.addBook);  
            }  
        }  
    })  
    .controller('firstController',['$scope',function($scope){  
    }])  

 

转载于:https://www.cnblogs.com/shawnhu/p/8540808.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值