angularjs – 如何递归要求访问父指令的控制器?

我正在递归地到达父“框”指令的控制器:
<body ng-app="main">

<!-- no nesting: parent is the just body -->
<Box></Box>

<script type="text/javascript">
angular.module('main',[])
.directive('Box',function() {
    return {
        restrict: 'E',controller: function() { },require: '?^Box',// find optional PARENT "Box" directive
        link: function(scope,iElement,iAttrs,controller) {
            // controller should be undefined,as there is no parent Box
            alert('Controller found: ' + (controller !== undefined));
        }
    };
});
</script>
</body>

我期望控制器变量在链接函数中未定义,但是我得到了实际框指令的控制器。

所以我的问题是…如何获得对PARENT控制器的访问情况,如下所示:

<Box>
    <Box></Box>
</Box>

http://jsfiddle.net/gjv9g/1/

由于Angular 1.3,您可以使用两个口音^^在父元素“only”中搜索指令。

报价从Angular Docs on require

  • (no prefix) – Locate the required controller on the current element. Throw an error if not found.
  • ? – Attempt to locate the required controller or pass null to the link fn if not found.
  • ^ – Locate the
    required controller by searching the element and its parents. Throw an error if not found.
  • ^^ – Locate the required controller by searching the element’s parents. Throw an error if not found.
  • ?^ – Attempt to locate the required controller by searching the element and its parents or pass null to the link fn if not found.
  • ?^^ – Attempt to locate the required controller by searching the element’s parents,or pass null to the link fn if not found.

在你的情况下,替换require:’?^ Box’,需要:’?^^ Box’,

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...