2016-12-14 5 views
0

Ich habe Schwierigkeiten, dies zu verstehen. Ich versuche Controller in separaten Dateien abgelegt werden, so dass sie nur mit 1 Sache befassen, im Idealfall, eine TeilansichtAngularJS 1.5 Controller in separaten Dateien

Meine Ordnerstruktur wie das ist ...

Folder Structure

Mein app.js Datei ist so.

angular.module('mikevarela', ['ui.router', 'mikevarela.controller.home', 'mikevarela.controller.about', 'mikevarela.controller.audio']) 

.config(function($stateProvider, $urlRouterProvider) { 

$urlRouterProvider.otherwise('/home'); 

$stateProvider 

    .state('home', { 
     url: '/home', 
     templateUrl: '../partials/home.partial.html', 
     controller: 'HomeController' 
    }) 

    .state('about', { 
     url: '/about', 
     templateUrl: '../partials/about.partial.html', 
     controller: 'AboutController' 
    }) 

    .state('audio', { 
     url: '/audio', 
     templateUrl: '../partials/audio.partial.html', 
     controller: 'AudioController' 
    }); 
}); 

und meine Controller verfügen über jeweils ein Modul so ...

angular.module('mikevarela.controller.home', []) 

.controller('HomeController', ['$scope', function($scope) { 
    $scope.title = 'Mike Varela Home Page'; 

}]); 

Meine Fragen kommt mit dem intial App Erklärung. Ich möchte nicht alle Controller in die Main-Array-App-Definition injizieren müssen, das wäre umständlich und langatmig. Gibt es keine Möglichkeit, den Controller in der Controller-Datei zu definieren? Art wie dieses

angular.module('mikevarela', []).controller('HomeController', ['$scope', function($scope) { 

// stuff here 

}]); 

Antwort

1

Verwenden Sie angular.module('mikevarela').controller..... in nachfolgenden Dateien.

angular.module('mikevarela',[]).controller.....

entspricht Ihre Anwendung neu zu definieren. Der zweite Parameter ist requires Array.

offiziellen angular.module docs

erfordert (optional) ! Array. =
Wenn angegeben, dann neues Modul erstellt Zitiert wird. Wenn nicht angegeben, wird das Modul zur weiteren Konfiguration abgerufen.

1

Über Ihre Controller ...

ich glaube, Sie die Controller falsch sind geladen.

Sie müssen Controller nicht als Abhängigkeit deklarieren. Eher unter Angabe) `macht diesen Controller im gesamten Modul verfügbar.

Wenn sich Ihre Controller in separaten Dateien befinden, müssen Sie sie nur mit einem script-Tag laden. z.B.

<script src="app.js"></script> 
<script src="controller1.js"></script> 
<script src="controller2.js"></script> 

über Ihre Anwendungsstruktur ...

Dies ist nicht zu Ihrer Frage, aber von jemandem kommt nur, wer Angular entwickelt hat verwenden, würde ich empfehlen, lieber nicht Gruppierung Ihre Anwendung von controllers/ durch nach Merkmal. Siehe: https://scotch.io/tutorials/angularjs-best-practices-directory-structure

Verwandte Themen