Warum hat replace=true
oder replace=false
keine Auswirkungen auf den Code unten?
Warum wird der "vorhandene Inhalt" nicht angezeigt, wenn replace = false?
Oder, demütiger ausgedrückt, können Sie uns bitte erklären, was die replace=true/false
Funktion in Richtlinien ist und wie man sie verwendet?
Beispiel
JS / Angular:
<script>
angular.module('scopes', [])
.controller('Ctrl', function($scope) {
$scope.title = "hello";
})
.directive('myDir', function() {
return {
restrict: 'E',
replace: true,
template: '<div>{{title}}</div>'
};
});
</script>
HTML:
<div ng-controller="Ctrl">
<my-dir><h3>some existing content</h3></my-dir>
</div>
Sehen Sie es in Plunker hier:
angularjs
angularjs-directive
Kaya Toast
quelle
quelle
Antworten:
Wenn Sie haben, erhalten
replace: true
Sie das folgende Stück DOM:während, mit
replace: false
Ihnen bekommen Sie diese:Die
replace
Eigenschaft in Direktiven bezieht sich also darauf, ob das Element, auf das die Direktive angewendet wird (<my-dir>
in diesem Fall), erhalten bleiben soll (replace: false
) und die Vorlage der Direktive als untergeordnetes Element angehängt werden soll.ODER
Das Element, auf das die Direktive angewendet wird, sollte durch
replace: true
die Vorlage der Direktive ersetzt ( ) werden.In beiden Fällen gehen die Kinder des Elements (auf das die Richtlinie angewendet wird) verloren. Wenn Sie den ursprünglichen Inhalt / die untergeordneten Elemente des Elements beibehalten möchten, müssen Sie ihn übersetzen. Die folgende Richtlinie würde es tun:
Wenn Sie in der Vorlage der Direktive ein Element (oder Elemente) mit Attribut haben
ng-transclude
, wird dessen Inhalt durch den ursprünglichen Inhalt des Elements (auf das die Direktive angewendet wird) ersetzt.Siehe Beispiel für die Übersetzung http://plnkr.co/edit/2DJQydBjgwj9vExLn3Ik?p=preview
Sehen Sie diese mehr über translusion zu lesen.
quelle
replace
ist seit AngularJS v1.3 ( Link ) veraltet .replace:true
ist veraltetAus den Dokumenten:
- AngularJS Comprehensive Directive API
Von GitHub:
- AngularJS Issue # 7636
Aktualisieren
Probleme mit Ersetzen: true
transclude: element
in der Ersetzungsvorlage root kann unerwartete Auswirkungen habenWeitere Informationen finden Sie unter
replace:true
quelle
remove-host
Abhilfe stackoverflow.com/questions/34280475/... , wenn Sie über die Aktivierung erfahren Siereplace: true
in A2 lassen Sie uns wissen.