来自 angular forEach 的有希望的回应其中有 $timeout
promising response from angular forEach which is having $timeout within it
我有一个 html 按钮,它必须根据范围变量启用或禁用。我根据条件在 for each 中分配 enable/disable 操作。对于这种情况,我需要 $timeout
.
vm.isDisable = true;//disbles the button before forEAch
//vm.gridData, which is array of object haves more than 1000 rows
angular.forEach(vm.gridData,function(rows){
if(rows.isSelectedRow == true) {
$timeout(function(){
vm.gridApi.selection.selectRow(rows);
})
});
vm.isDisable = false; //enables the button after for each
但是在 for each 完成之前启用按钮,因为 $timeout
在 forEach 中。如何在 forEach 期间禁用按钮并在迭代后重新启用它。
你应该在 all
方法中使用 promises:
var promises = [];
vm.isDisable = true;
angular.forEach(vm.gridData,function(rows){
if(rows.isSelectedRow == true) {
var deferred = $q.defer();
promises.push(deferred.promise);
$timeout(function(){
vm.gridApi.selection.selectRow(rows);
deferred.resolve();
})
});
$q.all(promises).then(function(){
vm.isDiable = false;
});
$timeout
returns 一个承诺,因此您可以创建这些承诺的数组并在它们全部解决后启用按钮
var promises = vm.gridData.reduce(function(a, c) {
if (c.rows.isSelectedRow == true) {
a.push($timeout(function() {
return vm.gridApi.selection.selectRow(c.rows);
}));
}
return a;
}, []);
$q.all(promises).then(function(){
vm.isDiable = false;
})
我有一个 html 按钮,它必须根据范围变量启用或禁用。我根据条件在 for each 中分配 enable/disable 操作。对于这种情况,我需要 $timeout
.
vm.isDisable = true;//disbles the button before forEAch
//vm.gridData, which is array of object haves more than 1000 rows
angular.forEach(vm.gridData,function(rows){
if(rows.isSelectedRow == true) {
$timeout(function(){
vm.gridApi.selection.selectRow(rows);
})
});
vm.isDisable = false; //enables the button after for each
但是在 for each 完成之前启用按钮,因为 $timeout
在 forEach 中。如何在 forEach 期间禁用按钮并在迭代后重新启用它。
你应该在 all
方法中使用 promises:
var promises = [];
vm.isDisable = true;
angular.forEach(vm.gridData,function(rows){
if(rows.isSelectedRow == true) {
var deferred = $q.defer();
promises.push(deferred.promise);
$timeout(function(){
vm.gridApi.selection.selectRow(rows);
deferred.resolve();
})
});
$q.all(promises).then(function(){
vm.isDiable = false;
});
$timeout
returns 一个承诺,因此您可以创建这些承诺的数组并在它们全部解决后启用按钮
var promises = vm.gridData.reduce(function(a, c) {
if (c.rows.isSelectedRow == true) {
a.push($timeout(function() {
return vm.gridApi.selection.selectRow(c.rows);
}));
}
return a;
}, []);
$q.all(promises).then(function(){
vm.isDiable = false;
})