【发布时间】:2017-01-17 21:28:47
【问题描述】:
两条路线具有相同的模块。如何配置它们? AuthorizeStep 到位(不同的授权规则)。
【问题讨论】:
两条路线具有相同的模块。如何配置它们? AuthorizeStep 到位(不同的授权规则)。
【问题讨论】:
实际的路由配置在 AuthorizeStep 中通过navigationInstruction.config 可用,因此您可以使用route.name、远程请求或additional route data 等来实现您的逻辑...
演示:https://gist.run/?id=c8bdb291aa052ee92b4a1403e4ac10d1
我们有 2 条路线:route1 和 route2。当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.
【讨论】: