2014-09-05 29 views
7

ı bir yönergesi var diyelim : Ben iç görüntü kaynak yolunu erişmek nasılArama hizmeti yöntemi

  1. ?
  2. Bu yolu MyService hizmetine nasıl geçirebilirim?

Güncelleme çözeltisiyle (bir ışık kutusu sarmalayıcı düşünün):

app.directive("component", function(LightboxService) { 
    return { 
     restrict: 'E', 
     transclude: true, 
     replace: true, 
     template: "<a href='' ng-click='lb()' ng-transclude></a>", 
     link: function (scope, element, attrs) { 
      scope.lb = function() { 
       var src = $(element).find("img").attr("src"); 
       LightboxService.show(src); 
      } 
     } 
    } 
}); 

cevap

10
  1. Sen kontrolör kapsamına bağlayarak veya özelliklerini kullanarak bir bağlantı yöntemiyle ya kaynak yoluna erişebilir .

  2. Servisten şablona erişemezsiniz. Hizmetinizi bir denetleyiciye enjekte etmeli ve şablondan çağrı yapmak için $ kapsamındaki bir işlevi tanımlamalısınız.

aşağıya yönergesini kontrol edin:

app.directive("component", function() { 
    return { 
     scope: { 
      ngSrc: "@", //Text Binding 
     }, 
     controller: function($scope, MyService) { 
      $scope.doThings = function() { 
       MyService.doThings(); 
      } 
     }, 
     restrict: 'E', 
     transclude: true, 
     template: "<a href='{{ng-src}}' ng-click='doThings' ng-transclude></a>" 
    } 
}); 

Burada izole kapsamı ile direktifler hakkında daha fazla bilgi edinebilirsiniz: Ben bir bağlantı yöntemi ile denedim https://umur.io/angularjs-directives-using-isolated-scope-with-attributes/

+0

, çalışıyor; İçsel yöntemde hizmet yöntemini çağıran bir yöntem tanımladığımda, çok işe yarıyor :) doğru giden yol gibi görünüyor, teşekkürler! (Çözümüm yazıya dahil ettim) – Cranio

İlgili konular