Javascript 为什么我的角度服务被呼叫了两次
我使用factory创建了一个angular服务,但是当我调用我的服务时,我在浏览器控制台中看到我的服务被调用了两次,我不知道为什么 这是我的服务代码:enqueteurService.jsJavascript 为什么我的角度服务被呼叫了两次,javascript,angularjs,rest,Javascript,Angularjs,Rest,我使用factory创建了一个angular服务,但是当我调用我的服务时,我在浏览器控制台中看到我的服务被调用了两次,我不知道为什么 这是我的服务代码:enqueteurService.js 'use strict'; appMain.factory('enqueteur', function($http, $log,$q) { var deffered = $q.defer(); var data = []; var enqueteur = {};
'use strict';
appMain.factory('enqueteur', function($http, $log,$q) {
var deffered = $q.defer();
var data = [];
var enqueteur = {};
enqueteur.async = function() {
$http.get('/Gnrqst/enqueteurs/liste-enqueteurs.do')
.success(function (response) {
data = response;
$log.log(response);
deffered.resolve();
});
return deffered.promise;
};
enqueteur.getAllEnqueteurs = function() { return data; };
return enqueteur;
});
'use strict' ;
appMain.controller('EnqueteurController', ['$scope','$http','$log','enqueteur', function ($scope,$http,$log,enqueteur) {
enqueteur.async().then(function(data) {
$scope.enqueteurs = enqueteur.getAllEnqueteurs();
});
}]);
这是我的控制器代码:enqueteurController.js
'use strict';
appMain.factory('enqueteur', function($http, $log,$q) {
var deffered = $q.defer();
var data = [];
var enqueteur = {};
enqueteur.async = function() {
$http.get('/Gnrqst/enqueteurs/liste-enqueteurs.do')
.success(function (response) {
data = response;
$log.log(response);
deffered.resolve();
});
return deffered.promise;
};
enqueteur.getAllEnqueteurs = function() { return data; };
return enqueteur;
});
'use strict' ;
appMain.controller('EnqueteurController', ['$scope','$http','$log','enqueteur', function ($scope,$http,$log,enqueteur) {
enqueteur.async().then(function(data) {
$scope.enqueteurs = enqueteur.getAllEnqueteurs();
});
}]);
这是我的jsp页面中使用我的服务的部分:
<tbody>
<tr ng-repeat="enqueteur in enqueteurs">
<td>{{enqueteur.id}}</td>
<td>{{enqueteur.nom}}</td>
<td>{{enqueteur.prenom}}</td>
<td>{{enqueteur.telephone}}</td>
<td>{{enqueteur.email}}</td>
</tr>
</tbody>
{{enqueteur.id}
{{enqueteur.nom}}
{{enqueteur.prenom}
{{enqueteur.电话}
{{enqueteur.email}
我的脚本是:
<script src="<c:url value="/resources/js/angular.js" />"></script>
<!-- ui-bootstrap js -->
<script src="<c:url value="/resources/js/ui-bootstrap.js" />"></script>
<!-- App js -->
<script src="<c:url value="/resources/js/app.js" />"></script>
<!-- enqueteur services js -->
<script src="<c:url value="/resources/js/services/enqueteurService.js" />"></script>
<!-- enqueteurController js -->
<script src="<c:url value="/resources/js/enqueteurController.js" />"></script>
我的代码运行良好,但在浏览器控制台中,我看到我的服务被调用了两次?有人能给我解释一下原因吗
这将显示控制台日志:
如果在chrome或类似浏览器中初始化了多个控制器实例,请在控制器的第4行设置断点-
enqueteur.async()
。如果调试器暂停两次,它将确认页面中有多个控制器实例,我确信是这样的@charlietfl当人们混合使用路由器和ng控制器时,你会看到这种情况,因为它鼓励使用容易出错的代码,比如在不需要时使用$q.defer
。事实上,该代码工作不好,因为如果HTTP请求失败,$q.defer将挂起。