Aurelia,在route-href之前调用click函数

时间:2017-08-08 15:24:12

标签: javascript aurelia aurelia-router

我有一个看似简单的问题,我想解决,但对于我的生活,我无法让它发挥作用。 我有一个函数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

中的例子

3 个答案:

答案 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()">

我认为你错过了一个“