Mein Ziel ist es, eine Direktive, die ich Inhalt geben, und es wiederholt sie X-mal. Genau wie ng-repeat, möchte ich es nur in andere Features wie limit toggle und extra Elemente außerhalb des übertragenen Inhalts einbinden.AngularJS Bereich in Richtlinie umwandeln mit ng-repeat
Aus irgendeinem Grund hat die Transklusion keinen Zugriff auf den Direktivenisolatbereich, egal was ich versuche.
Ich habe die transclude
Funktion innerhalb link
, in mehreren Variationen, vergeblich verwendet. Hier ist eine Demo:
Und hier ist der Kern des Codes:
app.directive('repeatContents', function() {
return {
scope: {
items: '=repeatContents',
limit: '=repeatLimit'
},
transclude: true,
template: '<div ng-repeat="item in items">' +
'<em>Outside transclude: {{item}}</em><br />' +
'<ng-transclude></ng-transclude>' +
'</div>',
link: function(scope, el, attrs, ctrl, transclude) {
transclude(scope, function(clone, scope) {
el.append(clone);
});
}
}
});
Wenn man sich die plunkr betrachten, werden Sie außerhalb der Einbindung sehen, dass {{item}}
verfügbar ist, aber nicht drinnen. Unabhängig vom Inhalt der link
-Funktion, der sich darum kümmern sollte. Irgendeine Idee, was ich tun kann?
ich nicht, was Sie bekommen konnte zu arbeiten gehen ... aber alternativ ich habe es an der Arbeit ohne die transclude durch nur die andere Direktive in die Vorlage zu setzen ... Hier ist die Plunkr für den Fall, dass überhaupt hilfreich ist https://plnrkr.co/edit/v7oFnukZxHMEi3xasFmc?p=preview – tarrball
Das ist in Ordnung, wenn ich nur einen Anwendungsfall habe , aber in meinen Anwendungen muss ich eine Kopie dieser Direktive für jeden Anwendungsfall machen, der den Zweck einer Direktive besiegt – casraf