具有UI模式的角度UI路由器

时间:2015-09-23 17:01:15

标签: javascript angularjs angular-ui-router angular-ui angular-ui-modal

这个问题在SO上存在一些变化,并且已经在网络上浮动,但它们有点不同,并且没有确定的答案。

基本上,我想在打开模态时更改UI路由器状态。然后,我想要发生两件事......

A)如果用户点击后退按钮,我想要取消模式并返回到先前状态的URL,但不重新加载以前的状态控制器等。(我只想要叠加和模态删除,因为前一个状态已经在叠加层下面,并且可能有一个用户正在填写的表单,例如)/

B)如果用户驳回模式,我希望发生同样的情况,那么网址应该改回原来的模式(模式可以从任何地方打开,所以我们不能硬编码声明它将返回)并且模态应该关闭。

(A)几乎可以通过使用此代码来解决...

App.run([
  '$rootScope', '$modalStack', 
  function($rootScope, $modalStack) {
    $rootScope.$on('$stateChangeStart', function() {
      var top = $modalStack.getTop();
      if (top) {
        $modalStack.dismiss(top.key);
      }
    });
  }
]);

但即使在当前的弹出窗口上打开另一个弹出窗口,也会关闭该模式(因为它不知道我们是否向前或向后移动)。基本上我们想说"让用户点击后退按钮或者状态是否转换到以前的状态,如果是,请关闭顶部模态。

(B)我不确定如何解决。当模态被解除时,我们可以强制状态改变回到先前的状态(如果我们知道先前的状态是什么),但是上面的(A)的代码将被触发并且可能从堆栈中移除另一个模态。此外,之前的状态将重新启动。基本上我们只想在关闭模态时回到之前的URL,但是如果没有做完全状态更改,那么这是否有意义?

就像我说的,那里有一些半解决方案,但似乎没有什么能够处理上述情况。有人有任何想法吗?

0 个答案:

没有答案