2016-04-18 14 views
1

In meiner AngularJS Anwendung, ich habe zwei Module: Modul A und Modul BWie eine Funktion von einem anderen Modul nennen

angular.module('A').controller('ACtrl',function($scope){ 
    $scope.alertA = function(){alert('a');} 
    //... 
}); 

angular.module('B').controller('BCtrl',function($scope){ 
    //... 
}); 

Wie die Funktion alertA im Modul B nennen?

+3

Ihre Funktion in einen Dienst Refactoring werden sollte. So werden Funktionen in Angular geteilt und gekreuzt. Zum Beispiel: http://stackoverflow.com/questions/18607010/accessing-factory-defined-in-another-module-in-angularjs – isherwood

+0

Auch: http://stackoverflow.com/questions/33882051/call-a-function -in-einem-Controller-in-einem anderen-Modul-in-angularjs – isherwood

+0

Schön, danke für Ihre Antworten. –

Antwort

7

Sie benötigen ein eine Fabrik in Modul zu definieren:

var moduleA= angular.module('A',[]); 
moduleA.factory('factoryA', function() { 
    return { 
     alertA: function() { 
      alert('a'); 
     }  
    }; 
}); 

Dann nutzen Sie die alertA Fabrik in Modul B:

angular.module('B',['A']).controller('BCtrl',function($scope,'factoryA'){ 
    factoryA.alertA(); 
}); 
1

Code Umgestalten in die folgenden Schritte:

  1. einen Dienst in Modul definieren Ein
  2. Modul A als Abhängigkeit hinzufügen B
  3. Injizieren Sie den Dienst in den Controller

zum Modul Hier ein Beispiel:

angular.module('A').service('API', function ($http) { 
    this.getData = function() { return $http.get('/data'); }; 
}); 

angular.module('B', ['A']).controller('dashboardCtrl', function ($scope, API) { 
    API.getData().then(function (data) { $scope.data = data; }); 
});