Javascript 奥雷莉亚没有';t';刷新';导航时的虚拟机

Javascript 奥雷莉亚没有';t';刷新';导航时的虚拟机,javascript,aurelia,Javascript,Aurelia,晚上好!在我的Aurelia应用程序中,我使用viewModel通过导航策略处理各种视图(读取路线参数并相应地设置视图) 导航工作正常,但有一个问题: 当我在基于相同viewModel的路线之间导航时,viewModel不会“刷新”。只有先使用不同的viewModel导航到不同的路线,然后再返回到预期路线时,内容才会按预期显示 组件的生命周期挂钩似乎没有发挥作用。有没有办法手动触发unbind()和detached()?还是有更好的方法来做事情 另外,路由配置似乎有点奇怪。当我删除模块ID时,应

晚上好!在我的Aurelia应用程序中,我使用viewModel通过导航策略处理各种视图(读取路线参数并相应地设置视图)

导航工作正常,但有一个问题:

当我在基于相同viewModel的路线之间导航时,viewModel不会“刷新”。只有先使用不同的viewModel导航到不同的路线,然后再返回到预期路线时,内容才会按预期显示

组件的生命周期挂钩似乎没有发挥作用。有没有办法手动触发unbind()和detached()?还是有更好的方法来做事情

另外,路由配置似乎有点奇怪。当我删除模块ID时,应用程序崩溃,当我删除layoutViewModel时,数据不会绑定到视图。我现在的解决方法是分配一个空的viewModel+一个空模板。我用错了吗

非常感谢

configureRouter(config, Router) {

  var getModelStrat = (instruction) => {
    instruction.config.layoutView = "pages/templates/"+instruction.params.model+".html"
  }

  config.addAuthorizeStep(AuthorizeStep);
  config.title = 'Aurelia';
  config.map([
    {
      route: 'detail/:model/:id?',
      name: 'detail',
      moduleId: 'pages/empty',
      layoutViewModel: 'pages/detail',
      auth: true,
      navigationStrategy: getModelStrat
    },
    {...}
  ]);
}

这是故意的。路由器将尝试重用现有的视图模型

如果需要覆盖此每个视图模型,请在其上创建
determinateActivationStrategy()
方法,并返回
activationStrategy.replace

从“aurelia路由器”导入{activationStrategy};
导出类SomeViewModel{
// ...
determineActivationStrategy(){
返回激活策略。替换;
}
// ...        
}
如果需要为每个视图模型/管线覆盖此选项,请查看类似问题。基本上,所有路由都需要定义
激活策略:“替换”