javascript - ionic 框架串联两个弹出窗口

标签 javascript angularjs ionic-framework

我有一个 ionic 应用程序,用户点击一个按钮,然后出现一个弹出窗口,然后用户点击弹出窗口中的一个按钮,另一个按钮出现。 这在浏览器中运行良好但是当我将它部署到 Android 设备时,在第二个弹出窗口关闭后页面卡住并且我无法再点击页面上的主按钮。

这是一个简短但完整的应用程序来演示我的问题。

<!DOCTYPE html>
<html>
<head>
<title>App</title>
<link href="lib/ionic/css/ionic.css" rel="stylesheet">
<!-- version 1.0.0-beta.9 -->
<script src="lib/ionic/js/ionic.bundle.js"></script>
<script>
    angular.module("app", ["ionic"])
        .controller("controller", function ($scope, $ionicPopup, $timeout) {
            var popup1;

            $scope.popup1 = function () {
                popup1 = $ionicPopup.show({
                    template: '<button ng-click="popup2()">popup2</button>',
                    title: 'popup1',
                    scope: $scope
                });
            }

            $scope.popup2 = function () {
                $ionicPopup.alert({
                    title: "Popup 2"
                }).then(function () {
                    /*
                    $timeout(function () {
                        popup1.close();
                    });
                    */

                    popup1.close();
                });
            }
        });
</script>
</head>
<body ng-app="app" ng-controller="controller">
    <button ng-click="popup1()">popup1</button>
</body>
</html>

最佳答案

这不起作用的原因可能是第二个弹出窗口在第一个弹出窗口关闭之前打开,这可能会破坏 Ionic 对第一个弹出窗口存在的了解。如果您在打开第二个弹出窗口之前关闭第一个弹出窗口,应该可以解决问题。

我看到几个选项:

<强>1。以 Ionic 方式创建按钮并使用 onTap 方法

$scope.popup1 = $ionicPopup.show({
  template: 'Your template here',
  title: 'popup1',
  scope: $scope,
  buttons: [
    {
      text: 'Popup2',
      onTap: function (e) {
        $scope.popup1.close();
        return $scope.popup2();
      }
    }
  ]
});

<强>2。在 popup2()

中首先关闭 popup1
$scope.popup2 = function () {
  $scope.popup1.close();

  // Open popup 2
}

<强>3。超时打开popup2

如果上述方法不起作用,请在 popup2 中的代码周围设置一个超时时间,让 Ionic 有时间关闭第一个弹出窗口。

$scope.popup2 = function () {
  // Move to the bottom of the queue to let Ionic close the first popup
  $timeout( function () {
    // Load popup2
  });
};

关于javascript - ionic 框架串联两个弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25310234/

相关文章:

javascript - 我正在尝试使用 AngularJS 发布数据

php - CSS 和 Javascript 汇总文件

javascript - 返回接口(interface)或扩展接口(interface)的数组

javascript - 如何将我网站上的视频分享到 WhatsApp

angular - IONIC 4 - Angular 路由参数

javascript - 如何使用 REST API 将表单数据从 ionic 应用程序发送到 parse.com MBaaS

javascript - 指令在 ionicModal 中首先遵守,甚至在 Controller 加载之前

javascript - 一种表单需要两个操作(一个本地,一个远程)

javascript - 如何获取 URL 的最后一部分,忽略任何 GET 参数?

javascript - 当进行有效的单选选择或文本输入时,聚焦于下一个 div