目前在我的一些控制器中,我有一个逻辑,例如如果满足某些条件,则将用户重定向到不同的路由。
我正在尝试将某些逻辑从控制器移到route.resolve
,以防止显示“无效”视图,然后将用户重定向到其他位置。
我已在route.resolve
处理身份验证,但这只是一行 - authService.requireUser()
。在更复杂的逻辑的情况下,例如我需要拥有当前的用户对象,根据路径参数获取一些资源,对结果进行一些计算,如果满足某些条件,则将用户重定向到一个地方,否则重定向到另一个等等。基本上它是很多代码并放置它所有路线定义似乎都不是很干净。
有没有人有解决方法如何处理它?也许使用单独的“路线解析器”对象?或者最好将它留在控制器中并使用标志(isLoaded
)在页面加载时显示一个微调器,并在所有内容加载完成后显示正确的视图?
答案 0 :(得分:0)
您可以注入具有该逻辑的服务。此服务可以返回一个承诺
resolve:{
projects:['Projects', function (Projects) {
//TODO: need to know the current user here
return Projects.all();
}],
tasks:['Tasks', function (Tasks) {
//TODO: need to know the current user here
return Tasks.all();
}]
}
您可以使用演示应用程序查看此repo,以便为您提供一些想法。