Angularjs refresh data from service when route changes. Simply update the data from the service when the route changes, here is an example.
Controller
1 2 3 4 5 6 7 8 9 10 11 12 13 |
angular.module("app").controller("MyController", function ($scope, MyService) { //load data for route $scope.data = MyService.returnedData; //update data when route has changed $scope.$watch('$routeChangeSuccess', function() { MyService.getData(true); }); }); |
Service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
angular.module("app").factory("MyService", function($q, $http, $routeParams) { var service = { returnedData: [], getData: function(forceRefresh) { var deferred = $q.defer(); if(forceRefresh) { $http.get("/api/data").success(function(data) { angular.copy(data, service.returnedData) deferred.resolve(service.returnedData); }); } else { deferred.resolve(service.returnedData); } return deferred.promise; } }; service.getData(true); return service; }); |
refs:
https://stackoverflow.com/questions/17882560/best-idiomatic-way-to-refresh-data-from-a-service-in-angularjs
One thought on “Angularjs refresh data from service when route changes”