Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法订阅Aurelia中的路由器事件(TypeScript)_Javascript_Typescript_Aurelia - Fatal编程技术网

Javascript 无法订阅Aurelia中的路由器事件(TypeScript)

Javascript 无法订阅Aurelia中的路由器事件(TypeScript),javascript,typescript,aurelia,Javascript,Typescript,Aurelia,这没有理由不起作用:) 我在导航时验证了事件是否触发,但未调用订阅的函数。有什么想法吗?因为附加函数是在所有路由之后调用的,并且这些路由都是在中组成的,所以您很可能是在调用事件之后订阅事件。您应该将其放入activate功能中 activate() { this.navEvent = this.ea.subscribe('router:navigation:complete', response => { localStorage['state'] = location.has

这没有理由不起作用:)


我在导航时验证了事件是否触发,但未调用订阅的函数。有什么想法吗?

因为附加函数是在所有路由之后调用的,并且这些路由都是在中组成的,所以您很可能是在调用事件之后订阅事件。您应该将其放入
activate
功能中

activate() {
  this.navEvent = this.ea.subscribe('router:navigation:complete', response => {
    localStorage['state'] = location.hash;
  });
}

deactivate() {
  this.navEvent.dispose();
}

不确定您是否已找到问题的解决方案,但请尝试直接使用
this.ea

this.ea.subscribe("router:navigation:complete", response => {
    localStorage['state'] = location.hash; 
});

不确定在构造函数中订阅所述事件是否有帮助?

您必须提供触发事件的代码。可能是错误销售或其他什么?直接使用
this.ea
会导致性能问题。如果重复使用此功能,删除
this.navEvent=
将导致多个事件相互叠加。这样会降低性能!使用
this.navEvent=
非常重要,这样可以通过deactivate方法销毁订阅。该方法创建了一个单例,每当该功能被重复使用时,只有1个事件运行。“router:navigation:complete”事件发生在URL更改之后&路由器更改DOM/视图。它应该在视图更新后立即触发。
this.ea.subscribe("router:navigation:complete", response => {
    localStorage['state'] = location.hash; 
});