我列出了每个复选框。选中复选框会导致3个不同的休息调用,并且响应将与该列表的HTML绑定。如果用户真的很快点击多个复选框,那么后面的呼叫的响应会覆盖先前呼叫的响应。(之前的呼叫仍在播放响应,后一个呼叫覆盖了之前的呼叫)
例如 - 如果我非常快速地检查6个复选框,则可能无法执行某些其余呼叫的响应。
getRequestRecords: function(obj) {
return $http({
url: $serverPath + '/alumCenter/notifications/request/' +obj',
method: "GET"
});
},
$scope.singleSelectSet=function(obj){
myService.getRequestRecords(obj).then(function(response){
$scope.myVar=response;
// do lots of things
});
}
<div ng-repeat="obj in flats track by $index">
<input type="checkbox" class="selectable" ng-click="singleSelectSet(obj)" ng-checked="showChecked($index)" aria-label="{{:: 'common.slideout.aria.slatSelectCheckboxLabel' | i18n }}">
</div>
答案 0 :(得分:0)
是否可以选择使用数组并将响应推送到它上面?这样您就不会覆盖$ scope中的变量。
$scope.myVar = [];
myService.getRequestRecords().then(function(response){
$scope.myVar.push(response);
// do lots of things
});
根据我的评论,使用$ q.all:
的示例// on check, wait for your three calls to be complete
// before triggering the callback
$scope.singleSelectSet=function(obj){
var queue = [
myService.getRequestRecords(),
myService.getOtherRequest(),
myService.getLastRequest()
];
$q.all(queue).then(function(response){
var responseRequestRecords = response[0],
responseOtherRequest = response[1],
responseLastRequest = response[2];
// do lots of things
});
}
请记住在控制器中注入$ q。