我,使用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会在第一时间更新,但有时却不是。如果我错了,请告诉我,并帮我找到答案
答案 0 :(得分:0)
我们在这里。你有一个抽象的管理状态。而且没有网址。然后任何url以/被视为admin的子状态开头。但它不是另一个国家。
因此,您可以将管理状态网址提供给/admin
,然后您可以将其添加到所有子状态,或者让订单说明管理员状态的子项。