我知道在angularJS中拥有有状态服务并不是最好的做法,但有时候当你想要一个服务方法返回多个值时它是有意义的。例如,在我的casei中,将需要在服务中执行一个load方法,该方法将触发多个异步REST调用以获取所有初始化数据,将其存储在服务中的多个实例变量中,然后任何控制器都可以在何时访问它需要。这将总结应用程序的整个初始化阶段。这是我的服务
(function(){
var dataService = function($http){
this.landTransportTypes=[];
var self = this;
this.loadTransportTypes = function(mode){
return $http.get('/porteo-webapp/rest/init/transporttype/'+mode).success(function(response){
this.landTransportTypes = response.data;
console.log("In Service : "+self.landTransportTypes);
})
};
return {
landTransportTypes:self.landTransportTypes,
loadTransportTypes:this.loadTransportTypes
};
};
angular.module('myApp').service('dataService',dataService);
}());
以下是我希望如何在我的控制器中访问服务实例变量
dataService
.loadTransportTypes('LAND')
.then(function(){
console.log(dataService.landTransportTypes)
});
但我在控制器中没有任何东西。在控制器中获取有状态数据的方法是什么?
答案 0 :(得分:0)
更改为:
(function(){
var dataService = function($http){
var self = this;
this.loadTransportTypes = function(mode){
return $http.get('/porteo-webapp/rest/init/transporttype/'+mode).then(function(response){
self.landTransportTypes = response.data;
console.log("In Service : "+self.landTransportTypes);
})
};
this.landTransportTypes=loadTransportTypes('XXX');
return {
landTransportTypes:self.landTransportTypes,
loadTransportTypes:this.loadTransportTypes
};
};
angular.module('myApp').service('dataService',dataService);
}());