无法在Angular JS

时间:2015-12-05 12:03:40

标签: javascript angularjs angularjs-directive angularjs-scope

我在angular js web应用程序中有以下代码片段。意图是在控制器中使用缓存来加快应用程序。

我在services.js文件中定义了以下缓存工厂,该文件将由我的应用程序中的多个控制器使用:

appServices.factory('AppCache', ['$cacheFactory', function($cacheFactory){
        return $cacheFactory('app-cache');
}]);

现在我的一个控制器中有以下代码:

appControllers.controller('pageController', ['$scope', 'AppCache', 'AnotherService', 
    function pageController($scope, AppCache, AnotherService) {

        $scope.init = function () {

            if (angular.isUndefined(AppCache.get('d')))
            {

                AnotherService.get({},
                        function success(successResponse) {
                            $scope.data = successResponse.response.r;
                            AppCache.put('d', $scope.data);
                        },
                        function error(errorResponse) {
                            console.log("Error:" + JSON.stringify(errorResponse));
                        }
                );
            }
            else
                $scope.data = AppCache.get('d');
}
}

问题是我无法在缓存中保存或检索任何数据。当我使用上面的代码时,我的页面变为空白,因为没有检索到数据。

请帮助我理解我的错误。

1 个答案:

答案 0 :(得分:0)

您将缓存命名为'app-cache',并尝试通过'd'访问它。在控制器中,只需将'd'替换为'app-cache',它应该有效:

appControllers.controller('pageController', ['$scope', 'AppCache', 'AnotherService', 
    function pageController($scope, AppCache, AnotherService) {

        $scope.init = function () {

            if (angular.isUndefined(AppCache.get('app-cache')))
            {

                AnotherService.get({},
                        function success(successResponse) {
                            $scope.data = successResponse.response.r;
                            AppCache.put('app-cache', $scope.data);
                        },
                        function error(errorResponse) {
                            console.log("Error:" + JSON.stringify(errorResponse));
                        }
                );
            }
            else
                $scope.data = AppCache.get('app-cache');
            }