Jak zabezpieczyć dyrektywę transclude, aby utworzyć nowe zakresy?AngularJS transclude scope = false?
To nie ma znaczenia, ponieważ dzięki nowym zakresom zilustrowanym czerwonymi obramowaniami.
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;
}
Dzięki. Zrobiłem prostszy przykład [jsfiddle] (http://jsfiddle.net/RHLzK/5/). Ale czy to błąd, czy jest to funkcja? – Jossi
To normalne zachowanie dla teleskopów potomnych (dziedziczą one przez prototyp z zakresu nadrzędnego, co oznacza, że można czytać z zakresu nadrzędnego, ale tak szybko, jak piszesz, jest ono w zakresie podrzędnym - chyba że użyjesz obiektu na nadrzędnym zakresie roboczym), może warto rzucić okiem na kod źródłowy dyrektywy ng-transclude, skopiować go i stworzyć własny z opcją scope: false. – Guillaume86
Problemy pojawiają się ponownie, jeśli zacznę używać zestawu transclude jako "element". Czy ktoś ma jakiś pomysł, dlaczego teraz nie działa? Demo: http://plnkr.co/edit/Bv1kFQtzdVzsasHTUrgf?p=preview –