pracuję w aplikacji mobilnej za pomocą angularjs jako ramy, obecnie mam strukturę podobną do tej:angularjs App: ładowanie danych z JSON raz i użyć go w kilku kontrolerów
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) {
}]);
a potem „m wyświetlanie zawartości z ng-view
:
<div class="ng-view></div>
wszystko działa dobrze, ale muszę się wczytać dane z pliku JSON, aby wypełnić całą zawartość aplikacji. Chcę tylko i tylko zadzwonić do AJAX tylko raz, a następnie przekazać dane przez wszystkie moje różne kontrolery. W mojej pierwszej próbie, myślałem, aby stworzyć usługę z $http.get()
w środku i to, że w każdym kontrolerze, ale to nie działa, ponieważ robi różne żądanie ajax za każdym razem wstrzyknąć i korzystać z usługi. Ponieważ jestem nowy przy użyciu kątowego, zastanawiam się, jaki jest najlepszy lub bardziej "kątowy" sposób, aby to osiągnąć, nie psując tego.
Edit: Dodaję kod usługi, która jest tylko prosty $http.get
prośba:
app.service('Data', ['$http', function($http) {
this.get = function() {
$http.get('data.json')
.success(function(result) {
return result;
})
}
});
Usługa brakuje przykład kod, który byłby najbardziej przydatny do zobaczenia tutaj. – seanhodges
@Didier Proponuję podzielić pliki kodu na różne kontrolery i użyć usługi do pobierania danych. zobacz moją odpowiedź na kod usługi –