我知道可以使用navigationStrategy
动态指定Aurelia路由模块,但这对我来说不起作用,因为切换值位于仅运行一次的RouterConfiguration中。我需要一种路由到不同视图的方法,在该视图中,切换值可以在一个会话中多次更改。此外,并非所有路线都具有多个视图。
基于动态值路由到同一路线上的不同视图的最佳实践是什么?
我提出了几种不同的策略,但是我不确定哪种策略是最可接受的方法。
使用viewPorts
,其中路由将具有静态moduleId
的视图,该视图使用全局字符串(例如,)将名称注入<router-view name="view1_index"></router-view>
的实例中。 “ view1”可能会作为“ view2”等向下传递。
使用2个或更多的<compose>
实例,其中路由将再次具有静态的moduleId
到一个视图,该视图将使用全局变量在{中切换if.bind
{1}}个实例
在路由模块中使用<compose>
并在满足条件的情况下重定向到辅助视口
在路由器配置中使用管道步骤来评估是否应将其定向到其他模块(如果可能)
这些策略中的哪一个(如果有的话)被最接受?如果所有这些都是通过奇怪的方式路由到每个视图的不同视图,该怎么办?
答案 0 :(得分:1)
路由到同一视图上的不同视图的最佳实践是什么 路径基于动态值?
撰写是您最好的选择。通常将参数传递给路由,在activate(params)
回调中捕获参数,使用params在视图模型上设置一个变量,然后使用该变量来设置{的view-model
属性{1}}。
在路由器配置中使用管道步骤来评估是否 应该直接转到其他模块(如果可能)
这很有可能。常见的用例是身份验证,其中您使用<compose>
来检查用户是否被授权,如果未授权,则将其重定向。参见http://foreverframe.net/exploring-aurelia-pipelines/。也可以在AuthorizeStep
中激活它。
使用viewPorts,其中路由将具有指向视图的静态moduleId 将该名称注入到使用全局字符串的实例中,例如“ view1” 可能会以“ view2”等形式向下传递。
我建议不要将视口用于将屏幕的某些部分上的视图的路由关联起来。
编辑:
您可能感兴趣的第三个选项是从PreactivateStep
函数返回一个Redirect
。
canActivate()