¿Por qué tiene replace=true
o replace=false
no algún impacto en el siguiente código?
¿Por qué no se muestra "algo de contenido existente" cuando replace = false?
O, para decirlo de manera más humilde, ¿podría explicarnos amablemente cuál es la replace=true/false
función de las directivas y cómo utilizarla?
Ejemplo
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>
Véalo en Plunker aquí:
angularjs
angularjs-directive
Tostada Kaya
fuente
fuente
Respuestas:
Cuando tienes
replace: true
, obtienes la siguiente pieza de DOM:mientras que, con
replace: false
obtienes esto:Entonces, la
replace
propiedad en las directivas se refiere a si el elemento al que se está aplicando la directiva (<my-dir>
en ese caso) debe permanecer (replace: false
) y la plantilla de la directiva debe agregarse como su hijo,O
el elemento al que se aplica la directiva debe ser reemplazado (
replace: true
) por la plantilla de la directiva.En ambos casos se perderán los hijos del elemento (al que se aplica la directiva). Si quisiera conservar el contenido / los niños originales del elemento, tendría que transludirlo. La siguiente directiva lo haría:
En ese caso, si en la plantilla de la directiva tiene un elemento (o elementos) con atributo
ng-transclude
, su contenido será reemplazado por el contenido original del elemento (al que se está aplicando la directiva).Ver ejemplo de translusión http://plnkr.co/edit/2DJQydBjgwj9vExLn3Ik?p=preview
Vea esto para leer más sobre la translusión.
fuente
replace
ha quedado obsoleto desde AngularJS v1.3 ( enlace ).replace:true
es obsoletoDe los Docs:
- API de directiva integral de AngularJS
Desde GitHub:
- Problema AngularJS # 7636
Actualizar
Problemas con reemplazar: verdadero
transclude: element
en la raíz de la plantilla de reemplazo puede tener efectos inesperadosPara más información, ver
replace:true
fuente
remove-host
solución stackoverflow.com/questions/34280475/… si averigua cómo activarreplace: true
en A2, avísenos.