2016-06-02 3 views
1

habe ich diese Leckerbissen der Code von einer anderen Frage Stack-ÜberlaufAngular Eine Funktion aus einer modalen Instanz aussetzen?

$modalInstance.opened.then(function(){ 
    alert('hi'); 
}); 

Im Alarm Abschnitt möchte ich eine Funktion aufrufen, die auf dem modalcontroller befindet. Wie kann ich das machen?

Mein modalen Aufruf ist unter

this.OpenMyModal = function(){ 

    var modalInstance = $modal.open({ 
     backdrop: 'static', 
     templateUrl: 'MyAddress/MyController/MyMethod', 
     controller: 'modalController',   
     resolve: {    
      myTemplateUrl: function(){     
       return myTemplateUrl; 
       }   
     } 
    }); 

modalInstance.rendered.then(function() { 
     /*modalcontroller function to call goes here;*/ 
    modalController.SearchClick(); 
    }); 

    return modalInstance.result.then(function (returnedInput) { 
     return returnedInput; 
    }, function() { 
     // dismissed with cancel button 
     return ""; 
    }) 
} 

Zur Zeit der Modal-Controller für die Suche verwendet wird. Es gibt eine Onclick-Funktion, die in dem modalen Controller ist, den ich aufrufen möchte. Die Funktion des Controllers wird

genannt
$scope.SearchClick = function() 
{ 
$scope.Search(); 
} 

Wenn ich die Klick-Funktion aufrufen, wenn der Controller wird es brechen initialisiert Funktionalität für andere Elemente, die diese gleichen Controller verwenden.

Ich brauche nur die Fähigkeit, diese einfache Funktion aufzurufen, wenn ich diesen Controller anrufe.

+1

Können Sie mehr Kontext bereitstellen? Es ist unklar, wo sich das erste Bit des Codes befindet. Noch besser wäre ein Plunkr/Geige. –

+0

Warum würden Sie es in der .rendered nennen, anstatt nur direkt von innerhalb von ModalController aufrufen, wenn es instanziiert wird? Ein bestimmter Kontext wäre hilfreich, um zu verstehen, was Sie tun. – jbrown

+0

Ich habe die Frage aktualisiert –

Antwort

0

Hier ist ein plunker

In diesem Plunker ich in der modalen Aufruf einer Funktion in zweierlei Hinsicht.

In der ersten Weise rufe ich die modale Funktion kurz nach dem Modal erscheinen. In der zweiten Weise rufe ich die modale Funktion mit einem Ereignis auf. Ich feuere dieses Ereignis von meinem Controller und im modalen Controller habe ich einen Listener, der auf dieses Ereignis wartet.

Methode 1: In Ihrem modalen Controller erstellen Sie eine Methode "initialisieren" (nur ein Beispiel).

function initialize() { 
    // Here you can call your function 

    console.log('Method 1, Call your function now!'); 
    $scope.myFunctionInsideModal(); 
} 

Und rufen Sie diese Methode im Modal-Controller

initialize(); // Initialize stuff 

Methode 2: Feuer ein Ereignis von Ihrem Controller

$rootScope.$broadcast('myCustomEvent', 'any data'); 

Und ein Zuhörer in Ihrem modalen Controller setzen:

$scope.$on('myCustomEvent', function(event, data) { 
    // Here you can call your function 

    console.log('Method 2, Call your function now! '); 
    $scope.myFunctionInsideModal(); 
}) 

Ich hoffe, es hilft.
Weitere Details und ein funktionierendes Beispiel finden Sie unter plunker.

Verwandte Themen