2016-03-25 10 views
2

Ich habe zwei Module wie folgt.Wie zu integrieren zwei Module in AngularJS

var module1 = angular.module('myApp',['ngAnimate','ngTouch'] 
    .controller('MainCtrl', function ($scope)){ 
    }); 

var module2 = angular.module('myApp',[]); 
    module2.controller('NameCtrl',function($scope)){ 

    }); 

und HTML hier

<body ng-app='myApp'> 
    <div ng-controller='MainCtrl'> //Code here</div> 
    <div ng-controller='NameCtrl'>//Code here</div> 
</body> 

Aber das wirft Fehler wie diese. 'NameCtrl' ist nicht vorhanden

Bitte lassen Sie mich wissen, wie Sie das beheben können. Vielen Dank im Voraus

Antwort

0

Sie brauchen nicht zwei Module zu erstellen.

Sie können implementieren, was Sie wie folgt benötigen.

var myComponent = angular.module('myComponent',[]); 

myComponent.controller('MainCtrl',function($scope)){ 

}; 

myComponent.controller('NameCtrl',function($scope)){ 

}; 
1

Sie benötigen keine 2 Module.

module1.controller('NameCtrl',function($scope)){ 

    }); 

ist, was Sie

0

wollen Dies ist einer der Sie gesucht?

var modules = angular.module('myApp',['ngAnimate','ngTouch'] 
    .controller('MainCtrl', function ($scope)){ 


}); 

    modules.controller('NameCtrl',function($scope)){ 

}); 
1

erklären Sie zwei verschiedene Module mit dem gleichen Namen. Du kannst es nicht tun.

Die angular.module Methode ist ein jQuery-like Getter und Setter. Wenn Sie es mit nur einen Parameter aufrufen arbeitet es als , wenn Sie es mit zwei oder mehr Parameter nennen, dann funktioniert es als setter.

Also, wenn Sie benötigen (wie scheint) nur ein weiteres Rezept (Controller, Service, ecc.) Zu registrieren, aber keine neues Modul, müssen Sie angular.module('ngApp').controller tun.

Andernfalls, wenn Sie ein neues Modul benötigen, müssen Sie einen anderen Namen zuweisen und es Bootstrap manuell über angular.bootstrap

2

Die richtige Struktur wie folgt aussehen würde ...

var myApp = angular.module('myApp', ['ngAnimate','ngTouch']); 

myApp.controller('MainCtrl', function($scope){ 

}); 


myApp.controller('NameCtrl', function($scope){ 

}); 

Denken Sie daran, Jedes Modul ist wie eine separate App. Jedes Modul muss ein eindeutiger Name sein, jedes Modul kann Dinge wie seine eigene Konfiguration, Controller, Dienste usw. haben.

0

Sie können nicht zwei Module mit demselben Namen benennen. Sie können verschiedene controller, service, directive, factory usw. in demselben Modul verwenden, so dass Sie möglicherweise kein anderes Modul für die einfache App verwenden müssen.

Wenn benötigen unterschiedliche Controller in demselben Modul dann wie

verwenden
var myModule = angular.module('myApp',['ngAnimate','ngTouch']); 

    myModule .controller('MainCtrl', function ($scope){ 
     //code 
    }); 

    myModule .controller('NameCtrl', function($scope){ 
     //code 
    }); 

Wenn anderes Modul benötigen müssen dann verschiedene Namen. Kann für diese Anwendung ein anderes Modul verwenden, das eine modulbasierte Anwendung ist.

0

Sie können nicht zwei Module mit demselben Namen haben. Falls Ihr Projekt so strukturiert ist, dass Sie wirklich nur ein Modul verwenden können, könnten Sie dies tun.

var module2 = angular.module('myModule2',[]); 
module2.controller('NameCtrl',function($scope) {...}); 

var module1 = angular.module('myApp',['ngAnimate','ngTouch', 'myModule2'] 
    .controller('MainCtrl', function($scope){...}); 
0

Um Ihre Anwendung in mehrere Module, die Sie die App und die Komponente (n) etwas anderes und machen Sie Ihre App auf Ihrem Komponente (n) abhängig nennen müssen zersetzen.

var myComponent = angular.module('myComponent',[]); 
myComponent.controller('NameCtrl',function($scope)){}); 

var anotherComponent = angular.module('anotherComponent',[]); 
anotherComponent.controller('NameCtrl',function($scope)){}); 

var myApp = angular.module('myApp',['ngAnimate','ngTouch', 'myComponent', 'anotherComponent']); 
myApp.controller('MainCtrl', function ($scope)){}); 
0

Das ist ein wenig verwirrend ist, weil nach docs, indem er erklärt, module2 Sie bereits bestehende myApp Modul zu überschreiben, die zu MainCtrl führen sollte nicht eine bestehende zu sein. Betrachten wir versuchen, was Wainage vorgeschlagen, oder, wenn Sie wirklich brauchen zwei separate Module, so etwas zu tun:

var module1 = angular.module('myApp.module1', []); 

module1.controller('NameCtrl',function($scope){ 
    $scope.value = 'Name controller value'; 
}); 
var myApp = angular.module('myApp', [/*Other dependencies*/'myApp.module1']); 
myApp.controller('MainCtrl', function ($scope){ 
    $scope.value = 'Main value'; 
}); 
Verwandte Themen