現在、angularjs の $http サービスを使用して、ローカルにホストされている 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