1

現在、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
4

1 に答える 1