2017-08-29 3 views
0

Ich habe derzeit 2 Javascript-Controller: SelectAll und ListAllDomains. Ich versuche, die Methode getBeanName (definiert in listAllDomains) in der Steuerung selectAll unter aufzurufen:Anruf Funktion von einem Controller in einem anderen in angularjs

response = $http.post('/invoke/selectAll/', INSERT_CALL_HERE); 

Als Hinweis, das Objekt von der Methode zurück getBeanName wird als Argument an den $ http weitergegeben werden. post() -Methode und wird von einem Java-Controller behandelt.

app.controller('listAllDomains', ['$http', '$scope', '$rootScope', function ($http, $scope, $rootScope) { 
 
    $scope.showSpinner = true; 
 
    $scope.showBtn = false; 
 
    let dataObj; 
 

 
    $http.get('domains/').then(function (response) { 
 
     $scope.showSpinner = false; 
 
     $scope.domains = response.data; 
 
    }); 
 

 
    $scope.showButton = function(eleStatus) { 
 
     let eleSize = Object.keys(eleStatus).length; 
 
     return !eleSize; 
 
    }; 
 
    $scope.getBeanName = function (objectType, objectName) { 
 

 
     dataObj = { 
 
      type : objectType, 
 
      name : objectName, 
 
      methodName : "select", 
 
      methodParameters : ["true"] 
 
     }; 
 

 
     localStorage.setItem("dataObj", dataObj); 
 
     console.log(dataObj); 
 
     $rootScope.$emit("invokeSelectAll", dataObj); 
 

 
     return dataObj; 
 
    } 
 
}]); 
 

 

 

 

 
app.controller('selectAll', ['$http', '$scope' , '$rootScope', 
 
    function ($http, $scope, $rootScope) { 
 

 
    var response; 
 

 
    $rootScope.$on("invokeSelectAll", function(){ 
 
     $scope.invokeSelectAll(); 
 
    }); 
 

 
    $scope.invokeSelectAll = function(){ 
 
     console.log(localStorage.getItem("dataObj")); 
 
     response = $http.post('/invoke/selectAll/', INSERT_CALL_HERE); 
 

 
     response.success(function(data, status, headers, config) { 
 
      $scope.responses = data ? data : "Select Operation not supported on this bean"; 
 
     }); 
 
    } 
 

 

 
}]);

Jede Hilfe wäre sehr geschätzt! Vielen Dank!

+0

jede Eltern-Kind-Beziehung zwischen den Controllern? – Rahul

+3

Definieren Sie die Methode "getBeanName" in einem Service und fügen Sie diesen Service in beide Controller ein. Dann können Sie es von jedem Controller aus aufrufen, in den Sie den Service injiziert haben. –

+2

Mögliches Duplikat von [Daten zwischen AngularJS-Controllern teilen] (https://stackoverflow.com/questions/21919962/share-data-between-angularjs-controllers) – anoop

Antwort

0

Sie können entweder einen Dienst erstellen und ihn in beide Controller injizieren oder Sie definieren einfach Ihre Funktion in $ rootScope und verwenden sie dann in einem beliebigen Controller.

prüfen diese Frage als Referenz: How to use $rootScope in AngularJS

0

Erstellen Sie zunächst einen Service/eine Fabrik mit der erforderlichen Funktion. Und spritze in die Steuerung ein.

Verwandte Themen