我使用角1.4来调用REST,但是我得到
达到AngularJS 10 $digest()迭代。正在中止
这是我的services.js
(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
.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不执行任何操作:
(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。
发布于 2016-04-13 12:52:17
您将返回$http承诺,然后从回调中返回deferred.promise,这可能会导致循环。删除$http返回。将deferred.promise从回调方法中移出并从getStatus方法返回。
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};
};
https://stackoverflow.com/questions/36598050
复制相似问题