Sto usando il modello angular-seed per strutturare la mia applicazione. Inizialmente ho messo tutto il mio codice JavaScript in un unico file, main.js
. Questo file conteneva la dichiarazione del modulo, i controller, le direttive, i filtri e i servizi. L'applicazione funziona bene in questo modo, ma sono preoccupato per la scalabilità e la manutenibilità poiché la mia applicazione diventa più complessa. Ho notato che il modello angular-seed ha file separati per ciascuno di questi, quindi ho tentato di distribuire il mio codice dal singolo main.js
file in ciascuno degli altri file menzionati nel titolo di questa domanda e trovati nella app/js
directory dell'angular -modello di semi .
La mia domanda è: come gestisco le dipendenze per far funzionare l'applicazione? La documentazione esistente trovata qui non è molto chiara a questo proposito poiché ciascuno degli esempi forniti mostra un singolo file sorgente JavaScript.
Un esempio di quello che ho è:
app.js
angular.module('myApp',
['myApp.filters',
'myApp.services',
'myApp.controllers']);
controllers.js
angular.module('myApp.controllers', []).
controller('AppCtrl', [function ($scope, $http, $filter, MyService) {
$scope.myService = MyService; // found in services.js
// other functions...
}
]);
filtri.js
angular.module('myApp.filters', []).
filter('myFilter', [function (MyService) {
return function(value) {
if (MyService.data) { // test to ensure service is loaded
for (var i = 0; i < MyService.data.length; i++) {
// code to return appropriate value from MyService
}
}
}
}]
);
services.js
angular.module('myApp.services', []).
factory('MyService', function($http) {
var MyService = {};
$http.get('resources/data.json').success(function(response) {
MyService.data = response;
});
return MyService;
}
);
main.js
/* This is the single file I want to separate into the others */
var myApp = angular.module('myApp'), []);
myApp.factory('MyService', function($http) {
// same code as in services.js
}
myApp.filter('myFilter', function(MyService) {
// same code as in filters.js
}
function AppCtrl ($scope, $http, $filter, MyService) {
// same code as in app.js
}
Come gestisco le dipendenze?
Grazie in anticipo.
angular.module('myApp.services', ['myApp.services']);
app.js senza fortuna.
angular.module('myApp.services', ['myApp.server', 'myApp.somethingElse'])
.
angular.module('myApp.service1', ['myApp.service1', 'myApp.service2'])
originariamente. Altrimenti non avrei incluso myApp.services come propria dipendenza.