2014-08-29 95 views
3

我正在使用Ionic Framework(Angular + Cordova)開發應用程序。

該應用程序有一個新聞部分,其中包含從JSON服務器加載的新聞列表,然後點擊新建以打開Single New's View,但是當返回到新聞列表時,$ scope已被清除並且必須從服務器重新獲得新聞列表。

這是通常的行爲還是我做錯了什麼?

我該如何防止這種行爲?

謝謝!

+0

您應該創建一個'service'對象來檢索並保存這種類型的對象,然後將該服務注入到您的控制器中並從中請求數據 – 2014-08-29 12:14:16

+0

無論如何,$ scope中還有另一個變量用於更改UI和新聞過濾,我需要保存,不能保存與服務 – Sirikon 2014-08-29 12:18:07

+0

[爲什麼我的$範圍屬性保持重置在我的AngularJS應用程序?](http://stackoverflow.com/questions/13939244/why-my-scope- attributes-keep-reseting-in-my-angularjs-application) – aymericbeaumet 2014-08-29 12:21:04

回答

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; 
    }) 
}]); 
0

您還可以使用$rootScope。正如Onosa在評論中提到的那樣,每次你實例化一個新的控制器時,都會注入一個新的$scope變量,但是$rootScope(如名稱所示)在應用程序的整個生命週期中保持不變(這是全局的)。

相關問題