2

有一些流行的递归角度指令Q & A在那里。 优雅的解决方案是将抽象的递归功能整合到一个服务 而在指令称之为“编译”阶段:Angular 1.5组件的递归

Stack Overflow Answer

什么是最好的办法,如果我想用同样的概念在新角1.5 .component()而不是.directive()?

+0

这是一个有点过于宽泛的一个问题......你应该尝试一下在1.5和看看你的想法。而你有特定的问题,在这里问:)。 – ajmajmajma

+0

@ajmajmajma我不明白2件事:1)为什么你给我倒下了。 2)如果你理解我的问题。 1.5 .component()没有'编译'... 我想我是beeing在我的问题 –

+1

我没有downvote,但有很多方法来实现递归通过指令或组件,因此这是一个广泛的并可能基于观点的问题。你应该至少给它一个镜头,并显示代码是否有问题或疑问。 – ajmajmajma

回答

2

组件应该比指令更严格(对于简单的指令)。

他们不公开compile功能。

这是从docs

当不使用组件:

对于依赖于DOM操作指令,将事件监听器等,因为编译和链接功能不可用 当你需要高级指令定义选项,如优先级,终端,多元素 ,当您需要由属性或CSS类触发的指令时,而不是元素

换句话说 - 组件不会替换指令,它们继承它们使得构建简单指令变得更容易。你仍然可以使用指令来完成任务。它们是而不是已弃用。

6

不确定混淆是什么......这非常简单。下面是一个递归组件的例子。

angular 
 
.module('app', []) 
 
.component('recursed', { 
 
    template: [ 
 
    '<div class="container">', 
 
     '<div>Contains {{$ctrl.depth}} layers</div>', 
 
     '<recursed depth="$ctrl.depth-1" ng-if="$ctrl.depth"></recursed>', 
 
    '</div>' 
 
    ].join(''), 
 
    bindings: { 
 
    depth: '<' 
 
    } 
 
})
.container { 
 
    padding: 5px; 
 
    border: 1px solid #ececec; 
 
    border-radius: 4px; 
 
}
<script src="//unpkg.com/[email protected]/angular.js"></script> 
 
<div ng-app="app"> 
 
    <h1>Recursion</h1> 
 
    <recursed depth="5"></recursed> 
 
</div>