Angular.js: Wrapping-Elemente in einem verschachtelten transclude

8

Das scheint so eine einfache Sache zu sein, aber ich bin einfach nicht in der Lage, meinen Kopf darum zu wickeln, wie es geht.

Hier ist, was ich will:

%Vor%

Das wird in etwa so:

%Vor%

Beachten Sie, dass ng-click für button in einem Wrapping li steht. Bei der normalen Übernahme wird jedoch ng-click auf li gesetzt.

Mein bester Versuch ist auf dieser Geige: Ссылка Dort habe ich den ng-click durch eine Klasse ersetzt, so ist es einfach zu sehen, wenn es funktioniert und nicht.

Irgendwelche Ideen, wie man das schafft? Wenn es wirklich einfach ist, könnte das Registerkarten- / Fensterbeispiel auf der Startseite möglicherweise um einen Wrapper um die Fenster erweitert werden, während die Attribute beibehalten werden.

    
Magnar 06.04.2013, 19:57
quelle

1 Antwort

8

Mit replace: true migriert der Ersetzungsprozess alle Attribute / Klassen vom alten Element ( & lt; meine-Schaltfläche ... & gt; ) in das neue Eins (das Wurzelelement in der Vorlage, & lt; li ... & gt; ). Transclude verschiebt den Inhalt des alten Elements in das angegebene Element (ng-transclude). Ich bin mir nicht sicher, ob es eine einfache Möglichkeit gibt, zu ändern, welches Element in der Vorlage die migrierten Attribute erhalten soll.

Um zu erreichen, was Sie wollen, könnten Sie wahrscheinlich eine dom-Manipulation in einer benutzerdefinierten Kompilierfunktion in der Direktive my-button vornehmen. Ich denke jedoch, es wäre eine bessere Idee, einen neuen isolieren Bereich in der my-Button-Direktive zu erstellen:

%Vor%

(Ich habe ng-click auf click-fn geändert)

%Vor%

Ich habe auch eine Arbeitsversion deiner Geige gemacht .

Um zu verstehen, wie der isolierte Bereich funktioniert ( scope: {clickFn: '& amp;'} ) empfehle ich Ihnen, die winkeliger Leitfaden zu Richtlinien .

    
joakimbl 08.04.2013, 18:10
quelle