2013-10-24 11 views
5

İki yönlü bir bağ yalıtımı olan myDirective yönergesi var. Kullanıcı bir düğmeyi tıkladığında, izolat kapsamını bir değer olarak değiştirmek istiyorum. İzolatların kapsamının $ kapsamına bağlı olduğunu sanıyordum ama yanılıyor. Nasıl yakalayabilirim ve bu izolat kapsamıyla nasıl etkileşime geçebilirim? Direktif kontrolörünün kapsamına bağlı değiller mi?İzolatör kapsam değişkeni ile yönerge denetleyicisi içinde nasıl etkileşim kurabilirim?

... 
<div my-directive twoway="{{ctrlTwoway}}"></div> 
Current value: {{ctrlTwoway}} 
+1

Denetleyicinin: '' link ''anlamına gelmediğinden emin misiniz? – tymeJV

+0

"Twoway: =" için yazım hatası olduğunu düşünüyorum, "twoway: '=" " – TrtG

cevap

10

angular.module("app", []) 
.controller("myCtrl", function($scope){ 
    $scope.ctrlTwoway = "Eggs"; 
}) 
.directive("myDirective", function(){ 
    return { 
     scope: { 
      twoway: = 
     }, 
     template: "<button ng-click="changeTwoway()">Change two way isolate scope</button>", 
     controller: function($scope, $element, $attrs){ 
      $scope.changeTwoway = function(){ 
       // get twoway from isolate scope, and update the value with "bacon" 
       // $scope.twoway = "bacon" doesn't work 
       // nor does $attrs.twoway = "bacon" work, either :(
      }; 
     } 
    } 
}); 

Ve HTML ben working version bir plunker yarattı.

{{variable}} ürününü twoway="" ürününe yerleştirmeniz gerekmez. Çalışmak için sadece twoway="ctrlTwoway" olarak değiştirin. Başka bir şey, bağlayıcıyı bildirme biçiminizdir. '=' yerine = kullanıyorsunuz.

Başka bir şey: direktiflerde denetleyici işlevi yerine bağlantı işlevini kullanmayı deneyin. DOM öğelerini değiştirmek istiyorsanız iyi bir uygulama ve doğru yer.

Source

ben yardımcı olur.

+0

" Bu cevap! Teşekkürler –