首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >达到AngularJS 10 $digest()迭代。正在中止

达到AngularJS 10 $digest()迭代。正在中止
EN

Stack Overflow用户
提问于 2016-04-13 12:15:18
回答 1查看 1.1K关注 0票数 0

我使用角1.4来调用REST,但是我得到

达到AngularJS 10 $digest()迭代。正在中止

这是我的services.js

代码语言:javascript
运行
复制
(function (angular) {
'use strict';

angular.module('myApp.services.dashboard', [])
        .factory('DashboardService', DashboardService);

DashboardService.$inject = ['$http', '$q', 'EndpointUrl'];

function DashboardService($http, $q, EndpointUrl) {
    function getStatus() {
        var deferred = $q.defer();

        return $http.get(EndpointUrl + 'status')
                .then(successRequest, failRequest);

        function successRequest(data) {
            deferred.resolve(data.data);
            return deferred.promise;
        }
        ;

        function failRequest() {
            deferred.reject([]);
            return deferred.promise;
        }
        ;
    };
};

})(angular);

这是我的app.js

代码语言:javascript
运行
复制
.config(function ($stateProvider, $urlRouterProvider, $httpProvider, $locationProvider, $compileProvider) {
                $locationProvider.html5Mode(false).hashPrefix('!');
                $compileProvider.debugInfoEnabled(false);

                $stateProvider
                        .state('dashboard', {
                            controller: 'DashboardController as dashboard',
                            url: '/app/dashboard',
                            templateUrl: '/assets/js/src/dashboard/templates/dashboard.html',
                            resolve: {
                                getStatus: function (DashboardService) {
                                    return DashboardService.getStatus();
                                }
                            }
                        });

                $urlRouterProvider.otherwise('/app/dashboard');
                $httpProvider.defaults.useXDomain = true;
                delete $httpProvider.defaults.headers.common['X-Requested-With'];
            })

我的controller.js不执行任何操作:

代码语言:javascript
运行
复制
(function (angular) {
    'use strict';
    angular.module('myApp.controllers.dashboard', [])
            .controller('DashboardController', DashboardController);
    DashboardController.$inject = ['$rootScope', '$state', '$filter', 'DashboardService', 'DashboardPeriods', 'getStatus'];
    function DashboardController($rootScope, $state, $filter, DashboardService, DashboardPeriods, getStatus) {

    }
    ;

})(angular);

因此,我不太明白为什么要进行$digest()迭代。

REST每次只返回一个相同的json。

EN

回答 1

Stack Overflow用户

发布于 2016-04-13 12:52:17

您将返回$http承诺,然后从回调中返回deferred.promise,这可能会导致循环。删除$http返回。将deferred.promise从回调方法中移出并从getStatus方法返回。

代码语言:javascript
运行
复制
function DashboardService($http, $q, EndpointUrl) {
    function getStatus() {
        var deferred = $q.defer();

        $http.get(EndpointUrl + 'status')
                .then(successRequest, failRequest);

        function successRequest(data) {
            deferred.resolve(data.data);
        };

        function failRequest() {
            deferred.reject([]);
        };

        return deferred.promise;
    };
    return {'getStatus': getStatus};
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36598050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档