2012-09-27 37 views
6

Nasıl yeni kapsamları oluşturmak için transclude ile direktifini önlemek için?angularjs yönergesi transclude kapsamı = false?

Bu jsfiddle nedeniyle kırmızı sınırları ile gösterilen yeni kapsamlarda bir şey bağlamak olamaz.

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; 
} 

cevap

6

Aslında beklenen Behav ior burada belirtildiği gibi (ng-transclude çocuk kapsamını oluşturmak): https://github.com/angular/angular.js/issues/1056 ve burada tartışılan: https://groups.google.com/forum/#!msg/angular/45jNmQucSCE/hL8x48-JfZIJ

Bu keman gibi kapsam (obj.var) bir nesne üzerinde bir üyeyi ayarlayarak bu geçici bir çözüm bulabilirsiniz: http://jsfiddle.net/rdarder/pnSNj/10/

<div ng-app="components"> 
    <input ng-model="var"> 
    <block> 
     123 
     <input ng-model="$parent.var"> 
    </block> 
</div> 
+0

Teşekkür: Bu rağmen – Jossi

+0

Çocuk kapsamları için normal davranışı (üst kapsamdaki prototiple miras aldıkları, yani ana kapsamdan okuyabileceğiniz, ancak yazdığınız anda, alt kapsamdadır) - üst kapsamdaki soruları kullanmazsanız), belki de, ng-transclude yönergesi kaynak koduna bakmak kopyalamak ve kapsamı ile kendi yapabilir: false seçeneği. Ben element' 'olarak ayarlanmış transclude kullanmaya başlamak eğer – Guillaume86

+0

sorunlar tekrar gündeme gelmektedir. Şu anda neden çalışmadığına dair bir fikri olan var mı? Demo: http://plnkr.co/edit/Bv1kFQtzdVzsasHTUrgf?p=preview –

0

Eğik ekip tarafından tavsiye edilmez, başka bir geçici çözüm açıkça çapraz dahil kısmın içinde $ ebeveyn kapsamını aramak. Ben daha basit bir örnek [jsfiddle] (http://jsfiddle.net/RHLzK/5/) .Ama bu bir hata olduğunu ya da bir özelliktir yaptı?