Pourquoi a-t-il replace=true
ou replace=false
non un impact sur le code ci-dessous?
Pourquoi le "contenu existant" n'est-il pas affiché lorsque replace = false?
Ou pour le dire plus humblement, pouvez-vous expliquer avec bonté quelle est la replace=true/false
fonctionnalité des directives et comment l'utiliser?
Exemple
JS / Angulaire:
<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>
Voyez-le dans Plunker ici:
angularjs
angularjs-directive
Toast Kaya
la source
la source
Réponses:
Lorsque vous avez,
replace: true
vous obtenez le morceau suivant de DOM:alors que, avec
replace: false
vous obtenez ceci:Ainsi, la
replace
propriété dans les directives se réfère à savoir si l'élément auquel la directive est appliquée (<my-dir>
dans ce cas) doit rester (replace: false
) et le modèle de la directive doit être ajouté comme son enfant,OU
l'élément auquel la directive est appliquée doit être remplacé (
replace: true
) par le modèle de la directive.Dans les deux cas, les enfants de l'élément (auquel la directive est appliquée) seront perdus. Si vous vouliez conserver le contenu / les enfants d'origine de l'élément, vous devrez le traduire. La directive suivante le ferait:
Dans ce cas, si dans le modèle de la directive vous avez un élément (ou des éléments) avec attribut
ng-transclude
, son contenu sera remplacé par le contenu original de l'élément (auquel la directive est appliquée).Voir l'exemple de translusion http://plnkr.co/edit/2DJQydBjgwj9vExLn3Ik?p=preview
Voir ceci pour en savoir plus sur la translusion.
la source
replace
est obsolète depuis AngularJS v1.3 ( lien ).replace:true
est obsolèteÀ partir des documents:
- API de directive complète AngularJS
Depuis GitHub:
- Problème AngularJS n ° 7636
Mettre à jour
Problèmes de remplacement: vrai
transclude: element
dans la racine du modèle de remplacement peut avoir des effets inattendusPour plus d'informations, consultez
replace:true
la source
remove-host
solution de contournement stackoverflow.com/questions/34280475/… si vous découvrez comment activerreplace: true
dans A2, faites-le nous savoir.