AngularJS, Routen ohne Aktualisierung über die Schaltfläche "Zurück" verwenden

Ich benutzeangularJS mit AJAX eine einfache Einzelseitenanwendung zu erstellen, aber ich stoße auf ein Problem, wenn Benutzer die native Zurück-Schaltfläche verwenden.

angular.module('myApp', ['ionic', 'myApp.controllers', myApp.services])

.config(function ($routeProvider, $locationProvider) {

    $routeProvider.when('/home', {
       templateUrl: 'templates/feed.html',
       controller: 'MenuCtrl',
       reloadOnSearch: false
   });

   $routeProvider.when('/checkin/view/:id', {
       templateUrl: 'templates/checkin.html',
       controller: 'MenuCtrl'
    });

    $routeProvider.otherwise({
        redirectTo: '/home'
    });


     $locationProvider.html5Mode(true)

})

UPDATE: $ http wurde per Feedback aus den Kontrollen entfernt, und Vorschläge:

Und meinservices.js Datei:

angular.module('myApp.services', [])

 .factory('FeedService', ['$http', function($http){
   var state = {};

  var loadFeed = function(){
       $http({
           method: 'GET',
           url: 'http://api.example',
         }).success(function(data){
        // With the data succesfully returned, call our callback
           state = data.response;
           console.log(data);
        }).error(function(){
           alert("error");
       });
   };

   loadFeed();

   return {
       getState: function(scope){
           return state;
       }
    };
}])

Und meincontroller.js Datei:

angular.module('myApp.controllers', [])

.controller('MenuCtrl', function($scope, $http, $location, FeedService) { 
    // feedback per second answer
    $scope.items  = FeedService.getState();

})

.controller('CheckinCtrl', function($scope, $routeParams) {
    $scope.checkin_id = $routeParams.id;
    console.log($routeParams.id);
});

Mein Hauptindex.html ist so aufgebaut:

 <body ng-app="untappd">
   <div ng-view></div>
 </body>

Dies funktioniert hervorragend, wenn Sie über einen Feed navigieren(/home)zu einer Eincheckseite(/checkin/view/:id) aber sobald der Benutzer die native Zurück-Taste im Browser drückt oder verwendetwindow.history.back()Code in dercontroller wird erneut aufgerufen, wodurch der AJAX-Aufruf ausgeführt wird, um den Friend-Feed des Benutzers abzurufen. Soll ich verwendenng-show anstatt zu verwendenng-view für diesen Anwendungsfall und erstellen Sie individuelle "Seiten" für jeden Inhalt, den ich anzeigen möchte? Ich war mit der Leistung beschäftigt, aber es scheint, dass ich nicht in jedem Daten erhalten kann, um zu bestehenng-view ohne dass die Vorlagen erneut aufgerufen werden müssen. Irgendeine Anleitung hier?

UPDATE: Ich habe dies geändert, um die Best Practices aufzunehmen, indem ich die$http Anfrage bei derservices Ebene, anstelle dercontroller Niveau. Ich habe immer noch das Problem, dass die getState-Anfrage ausgelöst wird, bevor die AJAX der$http ist vollständig, hat also einen leeren Zustand und nichts, um das zu rendern$scope.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage