Javascript AngularJS指令,它可以编译另一个具有访问父控制器权限的指令

Javascript AngularJS指令,它可以编译另一个具有访问父控制器权限的指令,javascript,angularjs,angularjs-directive,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Directive,Angularjs Ng Repeat,首先,我的问题是一个简短的伪代码: <book-ui> <icon> <!-- can access controller --> <icon-static> <!-- compiled and can not access controller --> <icon-animated><!-- compiled can not access controller --> </book

首先,我的问题是一个简短的伪代码:

<book-ui>
    <icon> <!-- can access controller -->
    <icon-static> <!-- compiled and can not access controller -->
    <icon-animated><!-- compiled can not access controller -->
</book-ui>

以下是我的解释:

  • 我有一个父指令
    ,它有一个控制器
  • 我有一个子指令
    ,它应该根据通过数据属性传递给它的数据编译其他指令
  • 另外两条指令
    应该能够访问
    控制器(它们是
    的孩子)
  • 这里是我的示例,其中
    指令根据某些条件成功编译了另外两个指令,并且
    指令可以访问
    控制器

    当我将
    require:'^bookUi'
    添加到
    指令(它们是编译指令)时,问题就出现了。将
    require:'^bookUi'
    添加到
    指令时,我没有任何错误

    我为什么这么做。我想在book中添加图标,所有图标都具有相同的数据结构,但根据其类型的不同,其行为完全不同,因此我认为最好将它们分为两个不同的指令。在模板中,我更容易使用:

    
    


    或者我应该在这里使用某种
    |过滤器:
    表达式吗?

    在实际实现中,您不需要
    图标
    指令

    您可以使用类似于
    filter:{type_id:1}
    的过滤器,您的指令结构如下所示

    <book-ui>
        <icon-static data="el" ng-repeat="el in elements | filter: {type_id: 1}"></icon-static>
        <icon-animated data="el" ng-repeat="el in elements | filter: {type_id: 2}"></icon-animated>
    </book-ui>
    
    
    
    您还可以要求父指令
    require:“^bookUi”


    检查更新的

    谢谢您的回答,我创建了自己的自定义过滤器,因为我需要测试type_id是否是set[1,2,3,4,5]的元素。