我希望这个帖子能让每个人都健康。
我的应用有两页,我在两个页面都使用相同的控制器。
我在页面加载时正在做十几个http请求,并与两个页面共享数据。但每次我访问其中一个页面时,所有的http请求都会再次发送到服务器。 如何只请求服务器一次并在页面之间共享数据。
我尝试为其中一个http请求创建一个工厂,但每次访问其中一个页面时仍会发送请求。
我的代码:
App.controller('mainController', function ($scope, translation) {
//methos 1
$http.get('types/').
success(function (data, status, headers, config) {
$scope.types = data;
});
//methos 2
translation.list(function(tr) {
$scope.trans = tr;
});
}
App.factory('translation', function ($http) {
return {
list: function (callback) {
$http.get('trans/').success(callback);
}
};
});
我在这里做错了什么?
答案 0 :(得分:0)
Heres就是一个例子:
App.factory('translation', function ($http,$q) {
var types_q = $q.defer();
var service = {
types: [],
list: list
}
return service;
function list() {
if (!service.types.length) {
console.log('fetching from server...');
$http.get('trans/').then(function(response) {
service.types = response.data.types;
types_q.resolve(response);
});
}
return $q.when('types_q').then(function() {
return types_q.promise;
});
}
});
App.controller('mainController', function ($scope, translation) {
$scope.loading = true;
translation.list().then(function(response) {
$scope.types = response.data.types;
$scope.loading = false;
});
});