Ich bin in einer mobilen App arbeitet AngularJS als Framework, zur Zeit ich eine ähnliche Struktur wie dieses:AngularJS App: Lastdaten von JSON einmal und es in mehrere Controller verwenden
app.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/', {
templateUrl : 'pages/home.html',
controller : 'homeCtrl'
})
.when('/one', {
templateUrl : 'pages/one.html',
controller : 'oneCtrl'
})
.when('/two', {
templateUrl : 'pages/two.html',
controller : 'twoCtrl'
});
}]);
app.controller('homeCtrl', ['$scope', function($scope) {
}]);
app.controller('oneCtrl', ['$scope', function($scope) {
}]);
app.controller('twoCtrl', ['$scope', function($scope) {
}]);
Und dann ich bin der Inhalt mit einem ng-view
Anzeige:
<div class="ng-view></div>
Dinge funktionieren gut, aber ich muss die Daten aus einer JSON-Datei laden alle Inhalte der App zu füllen. Was ich will, ist zu machen und ein AJAX Anruf nur einmal und dann die Daten durch alle meine verschiedenen Controller zu übergeben. Bei meinem ersten Versuch dachte ich daran, einen Dienst mit einem $http.get()
darin zu erstellen und das in jedem Controller zu integrieren, aber es funktioniert nicht, weil es jedes Mal, wenn ich den Dienst injiziere und benutze, eine andere Ajax-Anfrage macht. Da ich neu mit eckigen bin frage ich mich, was ist der beste Weg oder der mehr "eckige Weg", um dies zu erreichen, ohne es zu vermasseln.
Edit: ich den Code des Dienstes hinzugefügt, die $http.get
Anforderung nur eine einfache ist:
app.service('Data', ['$http', function($http) {
this.get = function() {
$http.get('data.json')
.success(function(result) {
return result;
})
}
});
Ihr Dienst wird aus dem Beispiel fehlt Code, der am nützlichsten wäre, um hier zu sehen. – seanhodges
@Didier Ich würde vorschlagen, dass Sie die Codedateien in verschiedene Controller aufteilen und einen Service für diesen Datenabruf verwenden. Sehen Sie meine Antwort für Service-Code –