В настоящее время я использую службу $ http из angularjs для извлечения данных из локально размещенного json-файла. Затем данные из этого файла отправляются контроллеру и отображаются как состояние в представлении через ui.router, в котором данные могут быть изменены. Измененные данные из этого состояния затем отображаются в другом состоянии, которое показывает эти данные в формате json, чтобы затем копироваться и вставляться в документ пользователем. Тем не менее, каждый раз, когда я меняю состояния, измененные данные возвращаются к исходным данным, поскольку контроллер должен перезагружать исходные данные каждый раз при изменении состояния. Есть ли способ сделать загрузку данных только один раз?
services.js
angular.module('angNewsApp')
.service('CustomerService', ['$http', function($http) {
var customers;
function init() {
return $http.get('customers/customers.json')
.then(function(data) {
customers = data.data;
});
}
function getCustomers() {
return customers
}
return {
init: init,
getCustomers: getCustomers
};
}])
customerController.js
angular.module('angNewsApp')
.controller('CustomerCtrl', function($scope, CustomerService) {
CustomerService.init().then(function() {
$scope.customers = CustomerService.getCustomers();
angular.forEach($scope.customers, function(customer) {
angular.forEach(customer.external_photos, function(photo) {
// Possibly fix broken URLs here.
// photo.external_url
});
});
});
//if you console.log($scope.customers) out here it returns as undefined