微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

离子 V1 等待弹出窗口

如何解决离子 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 举报,一经查实,本站将立刻删除。