Ich verwende die Angular-Seed- Vorlage, um meine Anwendung zu strukturieren. Anfangs habe ich meinen gesamten JavaScript-Code in einer einzigen Datei zusammengefasst main.js
. Diese Datei enthielt meine Moduldeklaration, Controller, Anweisungen, Filter und Dienste. Die Anwendung funktioniert gut, aber ich mache mir Sorgen um Skalierbarkeit und Wartbarkeit, da meine Anwendung komplexer wird. Ich habe festgestellt, dass die Angular-Seed-Vorlage für jede dieser Dateien separate Dateien enthält. Daher habe ich versucht, meinen Code aus der einzelnen main.js
Datei in jede der anderen Dateien zu verteilen, die im Titel dieser Frage erwähnt und im app/js
Verzeichnis der Angular- Datei gefunden wurden -Samenvorlage .
Meine Frage lautet: Wie verwalte ich die Abhängigkeiten, damit die Anwendung funktioniert? Die vorhandene Dokumentation hier ist in dieser Hinsicht nicht sehr klar, da jedes der angegebenen Beispiele eine einzelne JavaScript-Quelldatei zeigt.
Ein Beispiel für das, was ich habe, ist:
app.js.
angular.module('myApp',
['myApp.filters',
'myApp.services',
'myApp.controllers']);
controller.js
angular.module('myApp.controllers', []).
controller('AppCtrl', [function ($scope, $http, $filter, MyService) {
$scope.myService = MyService; // found in services.js
// other functions...
}
]);
filter.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
}
Wie verwalte ich die Abhängigkeiten?
Danke im Voraus.
angular.module('myApp.services', ['myApp.services']);
ohne Glück in app.js gesetzt.
angular.module('myApp.services', ['myApp.server', 'myApp.somethingElse'])
.
angular.module('myApp.service1', ['myApp.service1', 'myApp.service2'])
ursprünglich gelesen . Andernfalls hätte ich myApp.services nicht als eigene Abhängigkeit aufgenommen.