javascript - 如何使用 ui-router 1.0 防止 AngularJS 1.6 中的状态更改?

标签 javascript angularjs angular-ui-router transition angularjs-1.6

我们如何使用$transitions取消状态更改以提示用户保存?以前的 ui-router 版本曾经在回调中有一个 event,可以通过 event.preventDefault() 停止,但这个事件似乎已经消失了。

我在 Controller 中使用此代码:

var onTransitionStartOff = $transitions.onStart({}, function($transitions)
{
    if ($scope.itemTracker.hasChanged()) {
        $scope.itemTracker.askExitConfirm().then(function () {
            onTransitionStartOff();
            var toState = $transitions.$to();
            $state.go(toState);
        }, function () {});
        return $q.reject(null);
    }
    onTransitionStartOff();
});

它工作得很好,但由于被拒绝的 promise ,它在控制台中留下了一条错误消息。

console error

我查看了stateService.ts,但没有看到一些有趣的东西......

最佳答案

解决方案是,如果您想保持当前状态,则使用 false 解决 promise ;如果您想导航到新状态,则解决方案为 true。

return $q.resolve(false);

关于javascript - 如何使用 ui-router 1.0 防止 AngularJS 1.6 中的状态更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41787534/

相关文章:

javascript - 使用 AMD 在 Typescript 中引用文件(模块)

javascript - 搜索下拉菜单

angularjs - 基于所有标记的 ngMap 缩放

javascript - d3js/AngularJS - 在 Angular Directive(指令)中使用 d3js

javascript - PHP 和 MySQL 的多列下拉菜单

php - JavaScript奇怪的错误:“意外的')'”

javascript - 无法在 okta POST/ session API 调用中使用 SessionToken 创建 session

angularjs - angularjs中的选项卡无法与UI-Router和UI-bootstrap一起使用

javascript - Angular UI 路由器 : child state loaded twice when parent and child take parameter of same name in url

angular - router.navigate 更改 URL,但不呈现组件