Ionic: Preserve $scope when navigate to another vi

2019-07-04 02:38发布

问题:

I'm developing an app using Ionic Framework (Angular+Cordova).

The app have a News section with a list of news loaded from a server in JSON, then I tap in a new to open the Single New's View, but when go back to the list of news, $scope has been cleared and must get again the news list from the server.

Is this the usual behavior or am I doing something wrong?

How could I prevent this behavior?

Thanks!

回答1:

You should save this kind of data in a separate service, something in the line of this:

app.service('NewsService', ['$http', function($http){
    var newsPromise;

    this.getNews = function(){
        if(!newsPromise){
            newsPromise = $http.get('news.json');
        }
        return newsPromise;
    };
}]);

app.controller('NewsController', ['$scope','NewsService', function($scope, NewsService){
    NewsService.getNews().then(function(data){
        $scope.news = data.data;
    })
}]);


回答2:

You can also use $rootScope. As Onosa mentioned in the comments, every time you instantiate a new controller a new $scope variable is injected in, but the $rootScope (as the name says) keeps preserved for the whole life of your app (it's global).