1

我有一个问题。我正在构建一个 Angular 应用程序,我正在使用 Angular ui 路由器。

我想停止从一页到另一页的导航,直到我运行 dom 动画

我知道我有 onStateSuccess 和 onStateStart 但在运行动画之前我不知道如何停止进入该状态。

我知道我可以导航,$state.go('localhost')但我正在寻找一种更好的方法来停止和恢复活动。

有任何想法吗?


编辑

我看到我可以在更改开始时停止事件,有没有办法在我运行几个函数后恢复它?

$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
            console.log(event);
            console.log(toState);
            console.log(toParams);
            console.log(fromState);
            console.log(fromParams);
            event.preventDefault();

            // transitionTo() promise will be rejected with
            // a 'transition prevented' error
        });
4

1 回答 1

2

检查$stateChangeStart您当前是否正在制作动画(使用标志)。如果不是,请设置一个标志以指示您正在制作动画。如果您正在制作动画,请将新请求的视图推送到数组中。返回 false 将取消请求。

将动画标志设置为 false 并检查上面$stateChangeSuccess提到的数组是否有请求的视图,如果有的话$state.go()

更新

在动画开始时将标志设置为 true 并使用它来防止页面发生如上所述的变化。设置最长动画的超时时间。超时会将动画标志设置为 false 并触发真实状态更改。

于 2013-09-09T20:05:16.850 回答