离子框架两个串联的弹出窗口

adm*_*adm 3 javascript angularjs ionic-framework

我有一个离子应用程序,用户点击一个按钮,然后弹出一个弹出窗口,然后用户点击弹出窗口中的一个按钮,另一个显示.这在浏览器中工作正常但是当我将其部署到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>
Run Code Online (Sandbox Code Playgroud)

Emp*_*nal 6

这不起作用的原因可能是第二个弹出窗口在第一个弹出窗口关闭之前打开,这可能会杀死Ionic知道第一个弹出窗口存在.如果你在打开第二个弹出窗口之前杀掉第一个弹出窗口,那应该可以解决问题.

我看到几个选项:

1.以离子方式创建按钮并使用该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();
      }
    }
  ]
});
Run Code Online (Sandbox Code Playgroud)

2.关闭popup1第一件事popup2()

$scope.popup2 = function () {
  $scope.popup1.close();

  // Open popup 2
}
Run Code Online (Sandbox Code Playgroud)

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
  });
};
Run Code Online (Sandbox Code Playgroud)