我的控制器中有以下功能:
$scope.model.listApplicantStatuses = function(){
var statusChoices = jobsService.getApplicantStatuses();
if(statusChoices !== null)
return statusChoices;
//if($scope.model.listApplicantStatuses.inProgress)
// return;
//$scope.model.listApplicantStatuses.inProgress = true;
jobsService.fetchApplicantStatuses().then(function(data){
jobsService.setApplicantStatuses(data.data);
return data.data;
},
function(data){
$scope.layout.showNotification('error', 10 * 1000, 'we are is experiencing technical difficulties <a href="mailto:support@" class="btn btn-danger">Contact Support</a>');
});
}
对应服务代码:
jobsServ.fetchApplicantStatuses = function(){
return $http.get(utils.getBaseUrl() + '/applications/status_choices', utils.getConfig());
}
jobsServ.getApplicantStatuses = function(){
return that.applicantStatusChoices;
},
jobsServ.setApplicantStatuses = function(choices){
that.applicantStatusChoices = choices;
},
DOM 用法示例:
<select class="statusSelect" data-ng-model="model.editedApplicant[applicant.id].status" data-ng-show="layout.statusVisible(applicant.id) && !layout.statusLoader[applicant.id]" data-ng-options="key as val for (key, val) in model.listApplicantStatuses()" data-ng-change="model.updateStatus(applicant.id)"></select>
现在,我遇到的问题是,虽然 chrome 一直等到第一个函数调用完成,然后给我从 AJAX 调用中获得的数据,并同时返回 undefined,但 Firefox 一遍又一遍地调用该函数,创建大量不需要的 XHR 请求。
我注释掉了设置 inProgress $scope 变量的代码,因为它对我来说似乎是一个 jQurish 解决方案,并且因为这将迫使我在许多地方更改我的代码,并创建另一个布尔标志,例如这个 per对服务器的每个请求。