簡體   English   中英

ui-router在進入時導航到其他狀態

[英]ui-router navigate to another state onEnter

我有一個收集信息的向導流A

    states["wizard"] = {
        abstract: true,
        url: "^/wizard",
        controller: "wizardController",
        templateUrl: "wizard.html"
    };

    states["wizard.input"] = {
        url: "^/input",
        views: {
            "": {
                controller: "wizardController",
                templateUrl: "form.html"
            }
        }
    }
    states["wizard.completed"] = {
        templateUrl: "completed.html"
    };

另一個向導流程B與收集信息B的結構類似。

我想做的是當用戶導航到/ wizard時,它檢查是否填充了informationB,如果不是,請首先導航以填充informationB,然后再導航回/ wizard以繼續向導A。

當用戶導航到/ wizard時進行重定向的最佳方法是什么,而向導B完成后返回到/ wizard的最佳方法是什么?

作為返回,我可以在url中傳遞一些參數,並在WizardB控制器中檢查它是否需要進入WizardA,但不能完全弄清楚如何進行第一次重定向。

提前致謝。

感謝charlietfl提供的信息,使用resolve處理重定向看起來不錯! 這就是我最終要做的事情:

var redirect = (returnState: string) => {
        return ['$q', '$timeout', '$state', 'dataModel', ($q, $timeout, $state, dataModel) => {
                var deferred = $q.defer();
                $timeout(() => {
                    if (dataModel.informationB === "") {
                        $state.go('wizardB.input', { rs: returnState });
                        deferred.reject();
                    } else {
                        // everything is fine, proceed
                        deferred.resolve();
                    }
                });

                return deferred.promise;
            }
        ];
    }

並在狀態配置中:

    resolve: {
            redirect: redirect("wizardA.input")
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM