2

Es gibt ein paar populäre rekursive Winkeldirektive Q & A ist da draußen. Eine elegante Lösung ist die Rekursion Funktionalität in einen Dienst zu abstrahieren und sich auf Anweisung ruft ‚kompilieren‘ Phase:Rekursion in Angular 1.5 Komponenten

Stack Overflow Answer

Was ist der beste Ansatz, wenn ich das gleiche Konzept in dem neuen Winkel verwenden möge 1.5 .component() anstelle von .directive()?

+0

Dies ist ein wenig zu breit für eine Frage ... sollten Sie versuchen es in 1,5 und sehen, was Sie denken. Und Sie haben spezifische Probleme, fragen Sie in SO :). – ajmajmajma

+0

@ajmajmajma Ich verstehe 2 Dinge nicht: 1) Warum hast du mir Downvote gegeben. 2) Wenn du meine Frage verstanden hast. 1.5 .component() hat keine 'kompilieren' ... Ich glaube, ich bin spezifisch in meiner Frage –

+1

Ich habe nicht downvote, aber es gibt viele Möglichkeiten, Rekursion über eine Richtlinie oder Komponente zu erreichen, daher ist dies ein breites und möglicherweise meinungsbezogene Frage. Sie sollten es zumindest versuchen und Code zeigen, wenn es Probleme oder Fragen gibt. – ajmajmajma

Antwort

2

Komponenten sollen strenger sein als Richtlinien (für einfache Anweisungen).

Sie setzen compile Funktion nicht aus.

dies vom docs:

Wenn nicht-Komponenten zu verwenden:

für Richtlinien, die auf DOM-Manipulation verlassen, Ereignis-Listener usw. hinzufügen, da die Kompilierung und Verknüpfungsfunktionen nicht verfügbar sind, wenn Sie Sie benötigen erweiterte Optionen für die Definition von Anweisungen wie Priorität, Terminal, Multielement , wenn Sie eine Anweisung wünschen, die durch ein Attribut oder eine CSS-Klasse statt durch ein Element

ausgelöst wird

Mit anderen Worten - Komponenten ersetzen keine Direktiven, sie erben von ihnen, was es einfacher macht, einfache Direktiven zu erstellen. Sie können weiterhin Anweisungen für die Aufgabe verwenden. Sie sind nicht veraltet.

6

Nicht sicher, was die Verwirrung ist ... das ist extrem einfach zu ziehen. Im Folgenden finden Sie ein Beispiel für eine rekursive Komponente.

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>

Verwandte Themen