14

Başlığı direktifler etrafında almaya çalışıyorum, şablonumda ng tıklama varsa, HTML'mi dışarı atmak için şablon işlevini kolayca kullanabilirim. bağlantı işlevi içinde erişebilir miyim?AngularJS - özel yönergede ng-tıklama erişim

Benim yönergesi:

app.directive('directiveScroll', function() { 
return { 
     restrict: 'AE', 
     replace: 'true', 
     template: '<div class="scroll-btns">' + 
      '<div class="arrow-left" ng-click="scrollLeft(sectionID)"></div>' + 
      '<div class="arrow-right" ng-click="scrollRight(sectionID)"></div>' + 
     '</div>', 
     link: function(scope, elem, attrs) { 
     $scope.scrollRight = function() { 
      console.log("scrollRight clicked"); 
     }; 
     $scope.scrollLeft = function() { 
      console.log("scrollLeft clicked"); 
     }; 
     } 
    }; 
}); 

Gördüğünüz gibi

i ancak tıklamada, benim link işlevine $scope.scrollRight eklemiş, hiçbir şey konsolunda görünür.

i yerleştirirseniz: beklendiği gibi benim denetleyicisi olarak

$scope.scrollRight = function() { 
    console.log("scrollRight clicked"); 
}; 

$scope.scrollLeft = function() { 
    console.log("scrollLeft clicked"); 
}; 

(ve benim görevimde dışında) işe yarıyor.

Herhangi bir yardım için teşekkür ederiz.

+2

'$ scope' =' scope'. –

+0

@DavinTryon - –

+0

@ proxygear’ı işaretlediğiniz için teşekkür ederiz: Bu bir yazım hatası değil. O zamanlar kullanıcılar tarafında bir anlayış eksikliği. – Animesh

cevap

17

Bağlantınız fonksiyonu böyle tanımlanır enjekte edilmemelidir, bu yüzden bağlantı sadece parametrelerle basit bir işlevdir. Sen scope için $scope değiştirmelidir ve çalışması gerekir:!

scope.scrollRight = function() { 
     console.log("scrollRight clicked"); 
    }; 
    scope.scrollLeft = function() { 
     console.log("scrollLeft clicked"); 
    }; 
+0

çalışmış gibi görünüyor ve benim scrollRight/Left işlevimde ngClick'e geçtiğim sectionID'ye nasıl erişebilirim? –

+0

'scope.scrollLeft = işlev (param) {console.log (param); }; 'bu işlevler aynı şekilde çalışır. JS - parametrelerin geçtiği parametrelerin fonksiyonlarına karşılık gelen – domakas

+0

fonksiyon bildirgesindeki parametrelere uygun olduğunu, açıkladığınız için teşekkürler ve çözüm. –

0

Bağlantı işlevi parametresinin scope değil, $scope değil olduğundan emin misiniz? Eğer $scope değişkeni işlevlerini yazıyoruz ancak

link: function(scope, elem, attrs) {..} 

: Bu durumda $ kapsamında

$scope.scrollRight = function() { 
     console.log("scrollRight clicked"); 
    }; 
    $scope.scrollLeft = function() { 
     console.log("scrollLeft clicked"); 
    }; 

gerçekte bağlantı fonksiyonuna içine enjekte edilmez (ve can

+0

@threed Biliyorum ... Aslında daha yakından baktığımda, parametre adı kodda aşağıda kullanılandan farklıydı. Ve bunun kök sebebi olduğuna inanıyorum. – Gildor