使用ui.router更新网址的问题

时间:2015-01-08 12:21:02

标签: angularjs angular-ui-router

我,使用ui.router,我有下一个状态层次结构

 $stateProvider
        .state('admin', {
            abstract: true,
            url: '',
            templateUrl: baseUrl + "app/views/_MainLayout.html",
        })
    .state('admin.null', {
        url: '',
    })
        .state('admin.edit-customer', {
            url: "/Account",
            views: {
                "edit-info": {
                    controller: "CustomerEditController",
                    templateUrl: baseUrl + "app/Views/EditCustomer.html"
                }
            }
        })
        .state('admin.add-customer', {
            url: "",
            views: {
                "edit-info": {
                    controller: "CustomerAddController",
                    templateUrl: baseUrl + "app/Views/AddCustomer.html"
                }
            }
        })
        .state('admin.add-student', {
            url: "",
            views: {
                "edit-info": {
                    controller: "StudentAddController",
                    templateUrl: baseUrl + "app/Views/AddStudent.html"
                }
            }
        })
        .state('admin.edit-student', {
            url: "",
            views: {
                "edit-info": {
                    controller: "StudentEditController",
                    templateUrl: baseUrl + "app/Views/EditStudent.html"
                }
            }
        })
        .state('admin.teacher-tool', {
            url: "/TeachingTool",
            views: {
                "edit-info": {
                    controller: "TeacherAssignmentsController",
                    templateUrl: baseUrl + "app/Views/TeacherAssignments.html"
                }
            }
        })
        .state('order', {
            url: "/order",
            templateUrl: baseUrl + "app/views/OrderMain.html",
            controller: 'OrderController'
        });

    $locationProvider.html5Mode(true);
    $urlRouterProvider.otherwise('/Account');
}])

因此,当我在Account和TeachingTool之间切换时,一切正常,url更新应该如此,但是当我在Account and Order或TeachingTool和Order之间切换时,它只会在第二次切换到此状态后更改。

我发现并弄清楚url路径改变正常,我认为在摘要周期中url没有更新,我在orderController开始时尝试了这个

        $timeout(function () {
            $location.absUrl(baseUrl + $state.current.url);
            $location.path($state.current.url);
        }, 200);

它确实有所帮助,但并非总是如此,有时url会在第一时间更新,但有时却不是。如果我错了,请告诉我,并帮我找到答案

1 个答案:

答案 0 :(得分:0)

我们在这里。你有一个抽象的管理状态。而且没有网址。然后任何url以/被视为admin的子状态开头。但它不是另一个国家。

因此,您可以将管理状态网址提供给/admin,然后您可以将其添加到所有子状态,或者让订单说明管理员状态的子项。