我有一個具有「init」方法的服務「OneTimeService」。如何緩存角度數據?
// Within OneTimeService code
var this = self;
this.init = function() {
return $http..... function(data) {
self.data = data
}
}
裏面每個我的控制器,與我的路由相關聯的,我有: //在一些控制器代碼 OneTimeService.init(),然後(數據){$ = scope.somevariable數據.someattribute; //做別的東西 }
我的問題是,我有10個不同的「路線」。他們每個人都有的:
// Within every controller (assuming each route I have uses a different controller) code but injects the OneTimeService.
OneTimeService.init().then(data) {
$scope.somevariable = data.someattribute;
// do other stuff
}
每次我打電話「的init()」,它執行$ HTTP請求,在現實中,我要的是能夠在我的應用$ ONE TIME EVER叫它http請求,然後使用服務中的緩存變量「self.data」。我喜歡.then的原因是保證在做其他事情之前在OneTimeService中設置「self.data」。有替代品嗎?
這樣做的最好方法是什麼?