“require:^”是什么意思?

时间:2016-07-12 20:09:45

标签: javascript angularjs

在这个角度指令中,^意味着什么? 我找到了这个片段并试图弄清楚它在说什么。

.directive('accordionGroupHeading', function() {
    return {
        restrict: 'EA',
        transclude: true,  
        template: '',       
        replace: true,
        require: '^accordingGroup',
        link: function(scope, element, attr, accessibleAccordionGroupCtrl, transclude) {

            accessibleAccordionGroupCtrl.setHeading(transclude(scope, function() {}));
        }
    };
})

2 个答案:

答案 0 :(得分:0)

这里的require不是要求js实际上是说这个指令要求父类型为accordingGroup

查看角度文档以获取更多信息

https://docs.angularjs.org/guide/directive#creating-directives-that-communicate

答案 1 :(得分:0)

来自https://docs.angularjs.org/guide/directive

  

^^前缀表示此指令在其父项上搜索控制器。 (A ^前缀会使指令在其自己的元素或其父元素上查找控制器;没有任何前缀,该指令仅在其自己的元素上查找。)

所以基本上如果您的指令找不到控制器,您将会遇到错误。使用require,您将能够从link指令方法访问控制器。

link: function(scope, element, attrs, controller) {}