角度服务和多控制器相同的页面

时间:2015-05-16 21:09:00

标签: angularjs

我有包含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;
    });
}]);

1 个答案:

答案 0 :(得分:1)

如果您想立即从服务器加载数据并多次使用,可以使用cache选项

angular.module('app', []).factory('service', function($http) {
    return {
        load: function() {
            return $http.get('/api/url', {cache: true})
        }
    }
});

然后你可以调用service.load()并且只在第一次执行请求,稍后的调用将返回相同的结果而无需额外的请求。

请参阅$http docs了解各种缓存等内容。