Angular require(抄别的)

  1. require参数的值可以用下面的前缀进行修饰,这会改变查找控制器时的行为:
    ?
    如果在当前指令中没有找到所需要的控制器,会将null作为传给link函数的第四个参数。
    ^
    如果添加了^前缀,指令会在上游的指令链中查找require参数所指定的控制器。
    ?^
    将前面两个选项的行为组合起来,我们可选择地加载需要的指令并在父指令链中进行查找。
    没有前缀
    如果没有前缀,指令将会在自身所提供的控制器中进行查找,如果没有找到任何控制器(或具有指定名字的指令)就抛出一个错误。
  2. 在自定义Angular指令时。

    举个简单的例子,假如我们现在需要编写两个指令,在linking函数中有很多重合的方法,为了避免重复,我们可以将这个重复的方法写在第三个指令的 controller中,然后在另外两个需要的指令中require这个拥有controller字段的指令,最后通过linking函数的第四个参数就可以引用这些重合的方法。

  3. var app = angular.modeule('myapp',[]);  
  4. app.directive('common',function(){  
  5.     return {  
  6.     ...  
  7.     controller: function($scope){  
  8.         this.method1 = function(){  
  9.         };  
  10.         this.method2 = function(){  
  11.         };  
  12.     },  
  13.     ...  
  14.     }  
  15. });  
  16.   
  17. app.directive('d1',function(){  
  18.     return {  
  19.     ...  
  20.     require: '?^common',  
  21.     link: function(scope,elem,attrs,common){  
  22.         scope.method1 = common.method1;  
  23.         ..  
  24.         },  
  25.     ...  
  26.     }  
  27. });  
posted @ 2017-08-04 12:51  ThisCall  阅读(172)  评论(0编辑  收藏  举报