¿Cómo prevenir directivas con transclude para crear nuevos ámbitos?directiva AngularJS transclude scope = false?
Esto jsfiddle No puedo enlazar nada debido a los nuevos ámbitos ilustrados con bordes rojos.
HTML:
<div ng-app="components">
<input ng-model="var">
<block>
123
<input ng-model="var">
</block>
</div>
JavaScript:
angular.module('components', []).directive('block',function(){
return{
scope:false,
replace:true,
restrict:"E",
transclude:true,
template:'<div class="block" ng-transclude></div>',
link:function(scope, el, attrs, ctrl){
}
}
});
CSS:
.ng-scope{
border:1px solid red;
margin:10px;
}
Gracias. Hice un ejemplo más simple [jsfiddle] (http://jsfiddle.net/RHLzK/5/). ¿Pero es eso un error o es una característica? – Jossi
Es un comportamiento normal para ámbitos secundarios (heredan por prototipo del ámbito principal, lo que significa que puede leer desde el ámbito principal, pero tan pronto como escribe, está en el ámbito secundario, a menos que use el obj en el ámbito principal workaroud), quizás podría echarle un vistazo al código fuente de la directiva ng-transclude, copiarlo y crear el suyo con una opción scope: false. – Guillaume86
Los problemas aparecen nuevamente si empiezo a usar transclude set como 'element'. ¿Alguien tiene alguna idea de por qué no funciona ahora? Demostración: http://plnkr.co/edit/Bv1kFQtzdVzsasHTUrgf?p=preview –