我正在使用Ionic Framework(Angular + Cordova)开发应用程序。
该应用程序有一个新闻部分,其中包含从JSON中的服务器加载的新闻列表,然后我点击一个新的打开Single New的视图,但是当返回到新闻列表时,$ scope已被清除,必须从服务器再次获取新闻列表。
这是通常的行为还是我做错了什么?
我该如何防止这种行为?
谢谢!
答案 0 :(得分:7)
您应该将此类数据保存在单独的服务中,具体如下:
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;
})
}]);
答案 1 :(得分:0)
您也可以使用$rootScope
。正如Onosa在评论中提到的那样,每次实例化一个新的控制器时都会注入一个新的$scope
变量,但$rootScope
(如名称所示)会在应用程序的整个生命周期内保留(它是全球)。