如何解决离子 V1 等待弹出窗口
我正在打开一个弹出窗口,我想单击“Continuar”(在函数“quantDeProdutopopup”中)以显示另外两个弹出窗口,但以下代码将等待弹出操作。我试图在函数中放入“await”和“async”,但没有用。有人知道怎么解决,我的代码如下:
这是我工作的公司的一个项目,在IONIC 1中,我不太了解技术。我试图在其他论坛上找到它,但没有得到答案。
$scope.quantDeProdutopopup = $ionicPopup.show({
templateUrl: 'templates/popups/quantidade-de-produto.html',cssClass: 'composicao-popup',title: 'Informe a quantidade',scope: $scope,buttons: [{
text: 'Cancelar',type: 'button-energized',onTap: function (e) {
e.stopPropagation();
if (visualizandoNaComanda && !verificarQuantidadeDeAcompanhamentos()) {
e.preventDefault();
return;
}
}
},{
text: '<b>Confirmar</b>',type: 'button-positive',onTap: async function (e) {
if ($scope.temSabores) {
await $scope.openModalComposicao('sabores')
}
if ($scope.temAdicionais) {
await $scope.openModalComposicao('adicionais')
}
e.stopPropagation();
var strRemovidos = [];
var sTradicionais = [];
var strSabores = [];
angular.forEach($scope.produto.composicoes,function (i,k) {
if ($scope.produto.removidos && $scope.produto.removidos.indexOf(i.id) >= 0) {
strRemovidos.push(i.descricao);
} else if ($scope.produto.adicionais && $scope.produto.adicionais.indexOf(i.id) >= 0) {
if ($scope.produto.quantidadeAcompanhamentos > 0 && k <= $scope.produto.quantidadeAcompanhamentos) {
sTradicionais.push(i.descricao);
} else {
var valor = $filter("currency")(i.valor,"R$ ",2);
sTradicionais.push(i.descricao + " <span class='to-upper'>(" + valor + ")</span>");
}
}
else if ($scope.produto.sabores && $scope.produto.sabores.indexOf(i.id) >= 0) {
var valor = $filter("currency")(i.valor,2);
strSabores.push(i.descricao + " <span class='to-upper'>(" + valor + ")</span>");
}
});
$scope.produto.strRemovidos = strRemovidos.join(",");
$scope.produto.sTradicionais = sTradicionais.join(",");
$scope.produto.strSabores = strSabores.join(",");
if ($scope.quant_do_produto == 0) {
e.preventDefault();
notify.alert("Opps","Por favor,informe a quantidade.");
return;
}
if (!verificarQuantidadeDeAcompanhamentos()) {
e.preventDefault();
return;
}
$scope.produto.quant = $scope.quant_do_produto;
if (!$scope.ehCombo) {
if (!visualizandoNaComanda) {
ComandaService.addProduto($scope.produto);
notify.show("Produto adicionado com sucesso!",800,"ion-checkmark-circled balanced");
$scope.$root.$broadcast("evProdutoAdicionado");
} else {
$log.debug("produto n eh combo e apenas editado");
$log.debug($scope.produto);
}
}
else {
ComandaService.calculaVlTotalCombo();
}
if (usandoSimilarEscolhido) {
var combo = ComandaService.getComboSelecionado();
$scope.produto.similares = true;
combo.composicoes[combo.composicaoSimilarIdx] = $scope.produto;
}
$scope.$root.$broadcast("produtoFoiEditado");
// else if($scope.ehCombo){
// var combo = ComandaService.getComboSelecionado();
// if(combo.composicaoSimilarIdx)
// combo.composicoes.
// }
$scope.$destroy();
}
}]
});
$scope.openModalComposicao = async function (tipo) {
$scope.filterComposicao = "";
$scope.mostrarValoresDeAdicionais = $scope.produto.quantidadeAcompanhamentos > 0 ? false : true;
$scope.composicoesSelecionadas = {};
$scope.limitesPorSabores = [];
$scope.validarComposicao = function (key) {
if ($scope.produto.quantidadeAcompanhamentos > 0) {
if (tipo == "sabores") {
var limite = 0;
angular.forEach($scope.composicoesSelecionadas.sabores[key],function (c) {
if (c.checked == true)
limite++;
});
if (limite >= $scope.produto.quantidadeAcompanhamentos) {
notify.alert("Atenção!","Quantidade limite de sabores atingido.");
$scope.limitesPorSabores[key] = true;
}
else
$scope.limitesPorSabores[key] = false;
}
} else if (key != "Geral") {
var limite = 0;
angular.forEach($scope.composicoesSelecionadas.sabores[key],function (c) {
if (c.checked == true)
limite++;
if (c.quantidadeSabores == limite)
$scope.limitesPorSabores[key] = true;
else
$scope.limitesPorSabores[key] = false;
});
}
};
$scope.tipoComposicao = tipo;
var composicoestemp = angular.copy($scope.produto.composicoes);
if (tipo == "ingredientes") {
var title = "INGREDIENTES";
$scope.composicoesSelecionadas[tipo] = [];
var olistaTemp = [];
angular.forEach(composicoestemp,function (v,i) {
if (v.tipo == 1) {
if ($scope.produto.removidos) {
angular.forEach($scope.produto.removidos,function (pRem) {
if (pRem == v.id)
v.checked = true;
});
}
//$scope.composicoesSelecionadas[tipo].push(v);
olistaTemp.push(v);
}
});
$scope.composicoesSelecionadas[tipo] = olistaTemp.groupBy("codigoGrupo");
} else if (tipo == "adicionais") {
var title = "ADICIONAIS";
$scope.composicoesSelecionadas[tipo] = [];
var olistaTemp = [];
angular.forEach(composicoestemp,i) {
if (v.tipo == 2) {
if ($scope.produto.adicionais) {
angular.forEach($scope.produto.adicionais,function (pRem) {
if (pRem == v.id)
v.checked = true;
});
}
//$scope.composicoesSelecionadas[tipo].push(v);
olistaTemp.push(v);
}
});
$scope.composicoesSelecionadas[tipo] = olistaTemp.groupBy("codigoGrupo");
}
else if (tipo == "sabores") {
var title = "SABORES";
$scope.composicoesSelecionadas[tipo] = [];
var olistaTemp = [];
angular.forEach(composicoestemp,i) {
if (v.tipo == 4) {
if ($scope.produto.sabores) {
angular.forEach($scope.produto.sabores,function (pRem) {
if (pRem == v.id)
v.checked = true;
});
}
//$scope.composicoesSelecionadas[tipo].push(v);
olistaTemp.push(v);
}
});
$scope.composicoesSelecionadas[tipo] = olistaTemp.groupBy("codigoGrupo");
angular.forEach($scope.composicoesSelecionadas[tipo],function (produtos,key) {
$scope.validarComposicao(key);
});
}
$scope.showPopupList = false;
var popupDynamicH = "auto";
$scope.popupLoaded = function () {
$timeout(function () {
$scope.showPopupList = true;
// $scope.$apply();
},100);
};
setTimeout(function () {
$scope.popupComposicoesOpened = true;
},300);
var composicaoPopup = $ionicPopup.show({
templateUrl: 'templates/popups/composicoes.html',title: title,buttons: [{
text: 'Cancelar',onTap: function (e) {
e.stopPropagation();
$scope.composicoesSelecionadas = {};
setTimeout(function () {
$scope.popupComposicoesOpened = false;
$scope.$apply();
},800);
}
},{
text: '<b>Confirmar</b>',onTap: async function (e) {
e.stopPropagation();
if ($scope.tipoComposicao == "ingredientes") {
$scope.produto.removidos = [];
angular.forEach($scope.composicoesSelecionadas[$scope.tipoComposicao],function (olista,i) {
angular.forEach(olista,i) {
if (v.tipo == 1 && v.checked == true)
$scope.produto.removidos.push(v.id);
});
});
} else if ($scope.tipoComposicao == "adicionais") {
$scope.produto.adicionais = [];
angular.forEach($scope.composicoesSelecionadas[$scope.tipoComposicao],i) {
if (v.tipo == 2 && v.checked == true)
$scope.produto.adicionais.push(v.id);
});
});
if ($scope.limiteDeAdicionais > 0 && $scope.produto.adicionais.length <= 0) {
e.preventDefault();
notify.alert("Opss",informe pelo menos 1 item/sabor para o prato.");
return;
}
}
else if ($scope.tipoComposicao == "sabores") {
$scope.produto.sabores = [];
angular.forEach($scope.composicoesSelecionadas[$scope.tipoComposicao],i) {
if (v.tipo == 4 && v.checked == true)
$scope.produto.sabores.push(v.id);
});
});
}
$scope.composicoesSelecionadas = {};
setTimeout(function () {
$scope.popupComposicoesOpened = false;
$scope.$apply();
},800);
//return $scope.produto;
return true
}
}]
});
// $timeout(function () {
// _ionicScrollDelegate = $ionicScrollDelegate;
// $ionicScrollDelegate.$getByHandle('composicoes-delegate').resize();
// },1000);
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。