我有包含3个控制器的页面
我有服务,可以拨打$ http电话
从http调用中获取对象后,我希望其他控制器使用服务器中的数据。
例如我的主控制器应用http呼叫,而另一个控制器使用响应进行呼叫而没有多个服务器呼叫。
this is my print screen for the application 此页面中的“加载”是主控制器 但是通知是另一个控制器,状态是另一个控制器。 两个控制器都需要来自呼叫的数据
应用此通话的最佳方式是什么? 感谢
我未完成的代码
App.factory('siteService', function($http, $location, $q) {
var siteObject = {},defered = $q.defer();
function applaySiteServiceCall() {
$http(req).success($q.resolve);
return defered.promise;
}
return {
applaySiteServiceCall : applaySiteServiceCall,
promise : defered.promise
};
});
App.controller('VerifyController', ['$scope','$sce' ,'siteService', function($scope, $sce, siteService) {
siteService.applaySiteServiceCall().then(function (data) {
siteService.siteObject = data;
ֿֿֿֿ/// needed apply the data in the other controller
});
}]);
//// controller 2
App.controller('AlertController', ['$scope','siteService', function($scope, siteService) {
siteService.siteObject.promise.then(function(data) {
$scope.siteObject = data;
});
}]);
答案 0 :(得分:1)
如果您想立即从服务器加载数据并多次使用,可以使用cache
选项
angular.module('app', []).factory('service', function($http) {
return {
load: function() {
return $http.get('/api/url', {cache: true})
}
}
});
然后你可以调用service.load()
并且只在第一次执行请求,稍后的调用将返回相同的结果而无需额外的请求。
请参阅$http docs了解各种缓存等内容。