gpt4 book ai didi

dart - 额外/重定向默认路由时

转载 作者:行者123 更新时间:2023-12-03 03:47:12 27 4
gpt4 key购买 nike

我配置了我的RouteInitializer如下:

class AppRouteInitializer implements RouteInitializer {

init(Router router, ViewFactory view) {
router.root
..addRoute(
name: 'root',
path: '/lounge_client_demo/web/lounge_client_demo.html',
mount: (Route route) => route
..addRoute(
name: 'lobby',
path: '#lobby',
enter: view('views/LobbyView.html'))
..addRoute(
name: 'chat',
path: '#chat',
enter: view('views/ChatView.html'))
..addRoute(
name: 'default',
defaultRoute: true,
enter: (_) => router.go('lobby', {'param': ':param'}, startingFrom: route, replace: false))
);
}

}

游说和聊天的 URL:
http://127.0.0.1:3030/lounge_client_demo/web/lounge_client_demo.html#lobby http://127.0.0.1:3030/lounge_client_demo/web/lounge_client_demo.html#chat
正在按预期工作。但是,当我提交如下 URL 时:
http://127.0.0.1:3030/lounge_client_demo/web/lounge_client_demo.html
或者
http://127.0.0.1:3030/lounge_client_demo/web/lounge_client_demo.html#xxx defaultRoute 中的规则正在生成以下错误 URL:
http://127.0.0.1:3030/lounge_client_demo/web/lounge_client_demo/.html#lobby
我在这里假设有什么问题还是只是一个错误?

更新:日志显示 URL 中的点正在被转义,并且可能被错误地转换为目标 URL。
2014-01-29 01:20:18.026: FINEST : route /lounge_client_demo/web/lounge_client_demo.html [Route: null]
2014-01-29 01:20:18.035: FINEST : _processNewRoute /lounge_client_demo/web/lounge_client_demo.html
2014-01-29 01:20:18.047: FINEST : route [Route: root]
2014-01-29 01:20:18.055: FINEST : _processNewRoute
2014-01-29 01:20:18.066: FINEST : go /lounge_client_demo/web/lounge_client_demo\.html#lobby
2014-01-29 01:20:18.075: FINEST : route #lobby [Route: root]
2014-01-29 01:20:18.087: FINEST : _processNewRoute #lobby
2014-01-29 01:20:18.099: FINEST : route [Route: default]
2014-01-29 01:20:18.108: FINEST : route [Route: lobby]

更新:我复制了 lounge_client_demo.html进入 test.file.with.dots.html并获得以下 URL 重写:
http://127.0.0.1:3030/lounge_client_demo/web/test/.file/.with/.dots/.html#lobby
日志显示每个句点都被反斜杠“转义”:
2014-01-30 01:16:28.246: FINEST : go /lounge_client_demo/web/test\.file\.with\.dots\.html#lobby

route_hierarchical 包中的句点字符可能有问题?!

最佳答案

你不应该包括 #在路线路径中,所以只需 'lobby' ,而不是 '#lobby' -- 路由器正在为你做这件事。如果您想使用片段 ( #... ) 进行路由,那么您需要在模块中包含以下内容:

module.value(NgRoutingUsePushState, NgRoutingUsePushState.value(false));

告诉路由器使用 window.location.hash而不是 window.location.path用于路由,以及收听 window.onHashChange而不是 window.onPopState .

也就是说,您可以进行路径匹配或片段匹配,但不能同时进行。因此,您还需要删除“根”路由(对于路径 '/lounge_client_demo/web/lounge_client_demo.html')。一旦切换到片段匹配路径就变得无关紧要,只有 # 之后的内容传递给路由器。

您的路线配置应如下所示:

class AppRouteInitializer implements RouteInitializer {

init(Router router, ViewFactory view) {
router.root
..addRoute(
name: 'lobby',
path: 'lobby',
enter: view('views/LobbyView.html'))
..addRoute(
name: 'chat',
path: 'chat',
enter: view('views/ChatView.html'))
..addRoute(
name: 'default',
defaultRoute: true,
enter: (_) => router.go('lobby', {'param': ':param'}));
}

}

关于dart - 额外/重定向默认路由时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21418646/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com