2016-04-05 5 views
0

Aktuelle HTML

<g class='entity'> 
    <rect /> 
    <circle /> 
    ... 
</g> 

Neu/Desired HTML

<box> 
    <rect /> 
    <circle /> 
    ... 
</box> 

Einfache Richtlinie

app.directive('box', ['$document', function ($document) { 
    return { 
     restrict : 'E', 
     replace: true, 
     template: "<g class='entity'></g>" 
    }; 
}]); 

Ergebnis in DOM

<g class='entity'>... everything missing here ... </g> 

ich die Unter ch möchte ild Elemente an Ort und Stelle gehalten werden.Wie Unterelemente mit benutzerdefinierten Winkelanweisung enthalten?

Antwort

1

Was Sie suchen, heißt Transclusion. Wenn Sie transclude: true zu Ihrer Richtliniendefinition hinzufügen, werden alle untergeordneten Elemente beibehalten. Template überschreibt nur Box Element, aber behalte den inneren Inhalt.

app.directive('box', ['$document', function ($document) { 
return { 
    restrict : 'E', 
    replace: true, 
    transclude: true, 
    template: "<g class='entity'></g>" 
}; 

}]);

+0

Aus irgendeinem Grund habe ich dies zweimal versucht, aber es betrifft nichts? Ich benutze AngularJS 1.5x. – sprocket12

+1

Müssen Sie die 'ng-transclude'-Anweisung nicht in die Vorlage einfügen, um anzugeben, wo die untergeordneten Elemente ausgegeben werden? Wie in "Vorlage:" "'? –

+1

Eigentlich nein, wenn du keine ng-transclude angle zur Verfügung stellst, geht es automatisch an oberstes Element (g in diesem Fall). Sie brauchen ng-transclude nur dann, wenn Sie eine komplexere DOM-Struktur definieren wollen und auf einem inneren Element eingefügt werden möchten - Siehe diese Fidel: https://jsfiddle.net/Lt7aP/ 2503/ –

Verwandte Themen