gpt4 book ai didi

html - dart中的路由器未捕获window.location.assign()

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

我尝试使用来自route_hierarchical/client.dart的路由器来监听onpopstate事件,并在index.html中启用/禁用<div>。 (stagehand.pub dart插件中的示例)
如果通过index.html中的常规<a href="/relativePath">完成此操作,则它将起作用。
但是,如果我尝试通过调用的button.onClick.listen()处理程序更改路径:

window.location.assign('/relativePath');

我收到404,并且路由器无法正确处理我的事件。
该 Action 是否应该不调用Router捕获的popstate event(如 here所述)?

handlers.dart


...
button.onClick.listen((_){
window.location.assign('/about');
});

...

router.dart


var router = new Router();
router.root
..addRoute(name: 'about', path: '/about', enter: showAbout)
..addRoute(name: 'login', defaultRoute: true, path: '/', enter: showLogin)
..addRoute(name: 'context', path: '/context', enter: showContext);
router.listen();
}

void showAbout(RouteEvent e) {
// Extremely simple and non-scalable way to show different views.
querySelector('#login').style.display = 'none';
querySelector('#about').style.display = '';
querySelector('#context').style.display = 'none';
} ...

index.html


...
<form>
<button type="button" id="submit" disabled="true" >
Login
</button>
</form>
...

最佳答案

onPopState是错误的事件。仅当您导航到现有历史记录条目(后退,前进,pushState,进入历史记录的第二个条目)时,才会触发此事件。
您正在寻找的可能是window.onHashChange事件。

关于html - dart中的路由器未捕获window.location.assign(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29392425/

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