2017-06-17 1 views
0

So verwenden Sie ein Modul für mehrere Controller, wenn sich diese Controller in verschiedenen js-Dateien befinden.So verwenden Sie ein Modul für mehrere Controller

Ich habe 3 js Datei 1. app.js 2. Login. js 3. Register.js

app.js

var app = angular.module("myApp", ['ngRoute']); 
app.config(function ($routeProvider) { 
    $routeProvider.when('/', { 
    templateUrl: 'Login/login.html', 
    controller: 'myCtrl' 
}) 

.when('/register', { 
    templateUrl: 'Register/register.html', 
    controller: 'registerCntrl' 
}) 

})

Login.js

var app = angular.module("myApp"); 
    app.controller("myCtrl", function ($scope) { 

$scope.login = function (data) { 
    console.log(data); 
    if (data.name == 'pinku' && data.pswd == '1234') { 
     console.log("Login Successfull"); 
    } else { 
     console.log("Not successful"); 
    } 
}; 
$scope.moreInfo = function() { 
    alert("M in more info"); 
} 

});

Register.js

var app = angular.module("myApp"); 
    app.controller("registerCntrl", function ($scope) { 

});

Ich habe mein Modul in meiner app.js Datei jetzt ich möchte meinen Controller zu diesem Modul registrieren und Controller sind in verschiedenen Klassen. Ich habe ng-Route in app.js injiziert. In Login m bereits definierten Modul aber bin immer Fehler

‚Nicht bestandene Modul ngRoute aufgrund instanziiert:‘

Vielen Dank im Voraus

Antwort

1

Wenn Sie laden Ihre app.js erste, in anderen Dateien können Sie Ihre injizieren Module wie

app = angular.module("myApp"); 

Bitte beachte, dass ich [] aus dem Funktionsaufruf weglassen. Es bedeutet, dass Sie versuchen, das bereits definierte Modul zu bekommen.

+0

Wie stellen Sie sicher, dass app.js zuerst geladen wird? –

1

Sie lieber tun:

angular.module("myApp") 
.controller(...) 

für beide Controller, anstatt die Variable hier schreiben

Hinweis: app.js bevor Sie einen der Controller für diese Arbeit geladen werden soll .

Dies ist eine der Möglichkeiten, es kann getan werden:

<html ng-app="myApp"> 
<head> 
    <title></title> 
</head> 
<body> 

    <script type="text/javascript" src="app.js"></script> 
    <script type="text/javascript" src="controller1.js"></script> 
    <script type="text/javascript" src="controller2.js"></script> 
</body> 
</html> 

Abgesehen davon können Sie auch einige Aufgabe Läufer wie schluck OR Grunzen verwenden, die automatisch zu tun.

+0

Wie stelle ich sicher, dass app.js zuerst geladen wird? –

+0

Wenn Sie es manuell in Ihr HTML einfügen, sollten Sie es nur in das Skript-Tag einfügen, gefolgt von einem Skript-Tag für andere Controller. Es ist so gut wie das Laden verschiedener Skriptdateien in Ihrem HTML. Welches auch immer zuerst erwähnt wird, wird zuerst geladen, überprüfen Sie meine Antwort –

+0

Es funktionierte Danke. –

Verwandte Themen