2016-06-03 13 views
5

Chcę, aby dyrektywa otworzyła modal. Ale $ uibModal nie jest zdefiniowany w dyrektywie.

Jak mogę użyć $ uibModal w mojej dyrektywie, aby otworzyć modal?

+0

myślę można dodać sterownik do dyrektywy i wstrzyknąć $ uibModal tam. Będzie działał dobrze –

Odpowiedz

3

Funkcja Link do dyrektywy nie jest wstrzykiwana, wymaga stałego zestawu parametrów w ustalonej kolejności. Ale można wstrzyknąć usług do funkcji Sama dyrektywa:

app.directive('showPopUp', function($uibModal) { 
    return { 
     restrict: 'EA', 
     link: function(scope, el, attrs) { 

      var modalInstance = $uibModal.open({ 
       animation: scope.animationsEnabled, 
       templateUrl: 'popup.html', 
      }); 

      modalInstance.result.then(function(selectedItem) { 
       scope.selected = selectedItem; 
      }, function() {}); 

     } 
    } 
}); 

Demo:http://plnkr.co/edit/jwNOM94DtyRIXTdhvJmy?p=preview

+0

Po wstrzyknięciu usług do samej funkcji dyrektywy kod działa nieprzerwanie, a przeglądarka zawiesza się. – Keshav

+0

Nie jest to możliwe z opublikowanym przeze mnie kodem. Oznacza to, że zawiodłeś coś w swojej aplikacji. W odpowiedzi wysłałem demo. – dfsq

Powiązane problemy