Il modo più semplice per definire i controller è 1 per file. Ogni file deve essere avvolto con un'espressione di funzione immediatamente invocata (IIFE) o chiusura che consente di avere le proprie variabili locali senza inquinare l'ambito globale. Questo è l'approccio che prendo nei miei progetti:
my-app.js - File di definizione del modulo primario - Lo scopo principale di questo file è definire un modulo dell'applicazione e le sue dipendenze, definire il routing (se il routing è in uso), e configurare i provider. Nella sua forma più semplice, che appare così:
(function (angular) {
angular.module('myApp', ['myApp.someFeature']);
}(angular));
alcuni di funzionalità/alcune-feature.js - funzione di file di definizione del modulo - Questo file definisce un modulo per una caratteristica e tutte le dipendenze che questa caratteristica richiede. Questo può essere qualsiasi raggruppamento logico, non solo una funzione. Ciò rende molto facile portare la funzione in un altro modulo o applicazione, se necessario.
(function (angular) {
angular.module('myApp.someFeature', []);
}(angular));
alcuni di funzionalità/alcuni di funzionalità-controller.js - Regolatore necessaria per la funzione - Se la funzione inclusa più controller, sarebbe necessario un nome più descrittivo, ma lascia supporre questa caratteristica ha bisogno solo 1 controller.
(function (angular) {
function SomeFeatureController($scope) {
...
}
angular
.module('myApp.someFeature')
.controller('SomeFeatureController', SomeFeatureController);
}(angular));
index.html - pagina HTML di file - piuttosto auto esplicativo
<html ng-app="myApp">
<head>
<title>My Angular App</title>
<!-- Note: Angular and jQuery (if used) go in head so they delay view loading -->
<script type="text/javascript" language="javascript" src="angular.js"></script>
</head>
<body ng-controller="SomeFeatureController">
Content here....
<!-- Note application files go at the end of the body so they do not delay view loading -->
<script type="text/javascript language="javascript src="my-app.js">
<script type="text/javascript language="javascript src="some-feature/some-feature.js">
<script type="text/javascript language="javascript src="some-feature/some-feature-controller.js">
</body>
</html>
Non sapevo che 'oggetto module' ha' funzione controller' all'interno ma fa un sacco di senso =) Grazie. –
Angular necessita di una documentazione migliore. È un ottimo framework, ma ha una curva di apprendimento ripida –
Grazie per la modifica su come utilizzare il modulo con ng-app piuttosto che con ng-controller – Alex