2016-06-03 13 views
5

Ich möchte Anweisung zu einem modalen öffnen. Aber $ uibModal ist nicht innerhalb der Direktive definiert.

Wie kann ich $ uibModal innerhalb meiner Direktive verwenden, um Modal zu öffnen?

+0

ich glaube, Sie Controller auf Ihre Richtlinie hinzufügen und uibModal dort $ injizieren. Es funktioniert gut –

Antwort

3

Die Link-Funktion der Direktive ist nicht injizierbar, sie benötigt feste Parameter in fester Reihenfolge. Aber Sie können Dienste in Richtlinie Funktion injizieren selbst:

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

Nach dem Injizieren von Diensten in die Direktive-Funktion selbst läuft der Code kontinuierlich und Browser hängt. – Keshav

+0

Dies ist nicht möglich mit dem Code, den ich gepostet habe. Es bedeutet, dass du etwas in deiner App vermasselt hast. Ich habe eine Demo als Antwort veröffentlicht. – dfsq