![](/img/trans.png)
[英]how to get data of php Web api json from server to using angularJs.?
[英]AngularJS. Prevent loading JSON data twice when using caching
我有2个控制器ParentCtrl
和ChildCtrl
。
<div ng-controller="ParentCtrl">
<div ng-controller="ChildCtrl">
</div>
</div>
他们使用相同的服务方法来获取数据。 数据被缓存(使用$http
服务的cache:true
参数)。
angular.module('myApp')
.factory("myService", [
'$http',
function $http) {
return {
getMyData: function () {
return $http.get(url, {cache: true}).then(function (response) {
return data = response.
});
因此,问题在于这2个控制器开始同时工作-这意味着myService#getMyData
方法可被调用两次,即两次往返服务器。 但是我只需要一个往返,所以ChildCtrl
将从缓存中获取结果。
如何解决这个问题呢?
谢谢
与其做一些同步结构,不如将其作为预取数据(viewModel)添加到路由中:
$routeProvider
.when('/', {
templateUrl: 'index.html',
controller: homeController,
caseInsensitiveMatch: true,
resolve: {
sharedData: function($http, myService) {
var sharedPromise = myService.getMyData().then(function(results) {
return results;
});
}
}
});
然后,在控制器中,至少在根目录中,可以引用共享数据,就像引用服务一样:
function homeController($scope, $http, sharedData) {}
请原谅伪代码,但这至少可以确保您确保一次提取参考数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.