#Aureliajs:两条路线具有相同的模块。如何配置?

时间:2016-09-09 17:03:01

标签: routes aurelia

两条路线具有相同的模块。如何配置? AuthorizeStep到位(不同的授权规则)。

1 个答案:

答案 0 :(得分:0)

实际路由配置可通过navigationInstruction.config在AuthorizeStep中使用,因此您可以使用route.name,远程请求或additional route data等来实现您的逻辑......

演示:https://gist.run/?id=c8bdb291aa052ee92b4a1403e4ac10d1

我们有两条路线:route1route2。虽然可以访问route1,但route2会转到错误页面。

class AuthorizeStep {

  run(navigationInstruction, next) {

    if (navigationInstruction.config.name !== "unauthorized") {       
      var hasPermission = navigationInstruction.config.name === "route1";

      if (!hasPermission) {
        return next.cancel(new Redirect('unauthorized'));
      }
    }

    return next();
  }

}

在这种情况下,ModuleId并不重要。但是,重用相同的VM可能会导致另一个问题。我考虑将viewmodel的当前activationStrategy更改为activationStrategy.replace,以便每次都获得新的VM实例。 Docs: Reusing an existing VM section