我如何可以访问一个JavaScript变量从回归函数内?(How can I gain access

2019-10-21 13:46发布

    function storyData($http, $q) {
        var URL = 'stories.json';

        var storyCache = [];

        this.getStories = function() {
            var deferred = $q.defer();

            alert(URL);

            $http({method: 'GET', url: URL})
                .success(function (data, status, headers, config) {
                    storyCache = data;
                    alert(storyCache); //correct data appears in the alert window, but this doesn't set the instance storyCache variable for some reason

                    deferred.resolve(data);
                })
                .error(function (data, status, headers, config) {
                    deferred.reject(status);
                });

            return deferred.promise;
        };

        this.stories = function() {
            return storyCache;
        }
    }

我的应用程序 -

'use strict';

var angularApp = angular.module('ccsApp', ['ngRoute', 'ngAnimate', 'ui.bootstrap']);

angularApp.config(['$routeProvider',
    function($routeProvider) {
        $routeProvider.
            when('/', {
                templateUrl: 'stories.html',
                controller: 'StoryController as StoryCtrl',
                resolve: {
                    stories: function(storyData) {
                        return storyData.getStories();
                    }
                }

            })
            .otherwise({
                redirectTo: '/'
            });
    }
]);

在我的控制,我不注入从routeProvider的“故事”的值,这样我可以用我的服务。

为什么我无法从storyCache我的$ HTTP方法中改变? 我相信这是一件非常简单的,但我的研究并没有使我的答案。 预先感谢您的帮助。

异步。 这方面工作正常,并没有问题。 我保证,我用我的routeProvider决心对象拥有的数据。 另外,我保证我的deferred.resolve面前的数据(数据)方法,通过它发出警报执行。 我没有解决方案,但一个错误在我使用异步的。 不是解决办法。

文章来源: How can I gain access to a Javascript variable from within a return function?