我有一个看似简单的问题,我想解决,但对于我的生活,我无法让它发挥作用。
我有一个函数OnModelCreating
,我希望在路由到另一个页面之前调用它。
setStatus()
test1.js
export class Test1{
setStatus() {
this.statusId = 1
}
}
test1.hmtl
问题是它只是直接路由到test2而且它不会在test1中调用<template>
<a route-href="route:test2" click.delegate="setStatus()"> <!-- search-href="model.bind: searchModel"> -->
<h3 class="tsd-dashboard-block__title">${'overdue' & t}</h3>
<span class="tsd-dashboard-block__count">${count}</span>
</a>
</template>
函数。
我也尝试使用setStatus()
,但没有尝试。
任何人都可以指出我在这里做错了什么或者我需要使用一些特殊的aurelia路由事件?感谢
P.S我也遵循了这个link
中的例子答案 0 :(得分:2)
如果你需要在按下锚点之前调用一个函数,你可能会在mousedown上执行它,所以它比在处理程序之前调用的click处理程序更早被触发。像mousedown.trigger="myMethod()"
这样的东西应该有效。确保从myMethod()返回true,否则它将无法按预期方式导航。
答案 1 :(得分:2)
我从未混合过类似的事件,但我通过编程方式使用路由器解决了类似的问题。
基本上你可以在你的setStatus()
中setStatus() {
this.statusId = 0;
this.router.navigateToRoute('route:test2');
}
要完成这项工作,您需要在构造函数中注入路由器。
@inject(Router)
export class Test1 {
constructor(router) {
this.router = router;
}
...
setStatus() { ... }
...
}
编辑:我建议将setStatus
方法重命名为更明确的内容:)
Edit2:正如@PW Kad所提到的,这不应该是用户体验的链接。这更像是一个带有导航副作用的动作,而<button>
将是HTML元素的更好选择。
答案 2 :(得分:0)
<a route-href="route:test2" click.delegate="setStatus()">
我认为你错过了一个“