:更新
任何人都可以帮我找到如何根据用户创建路由和子路由 是否可以创建一个Widget来完成工作,如果是这样的话
这就是我的菜单的样子(注意:所有菜单项一起让我们称之为 master ):
-Home
-shop
-men
-women
-food
-dog
-human
-cart
-settings
-user
-images
-themes
假设我有以下userGroup:
-Admin
-visitors
-vip
-costumers
-co-workers
我想做的事情就像是
if(user == Admin){
destroy the current menu then make a copy of master **master** remove subroute women and subroute dog then push
}else if(user == visitor){
...
}
还是有更好的方法来做到这一点以及我在哪里定义它?
答案 0 :(得分:2)
首先,您可能需要考虑将项目升级到Durandal 2.0,因为它消除了对sammy.js的依赖,转而使用效果更好的自定义路由器(Durandal 1.0现在基本上已经过时)。以下是升级页面:http://durandaljs.com/documentation/Conversion-Guide/
以下是新路由器上的文档:http://durandaljs.com/documentation/Using-The-Router/
至于处理基于用户的路由,因为router.map只需要一个路由数组,你可以有条件地建立数组并将其传递给router.map
var routes = [ { route: '', moduleId: 'hello/index', title: 'Hello World', nav: true },
{ route: 'men', moduleId: 'men/index', title: 'Men', nav: true }]
if(user == Admin){
routes.push({ route: 'admin', moduleId: 'admin/index', title: 'Admin', nav: true }
}else if(user == visitor){
routes.push({ route: 'women', moduleId: 'women/index', title: 'women', nav: true }
}
return router.map(routes)
.buildNavigationModel()
.mapUnknownRoutes('hello/index', 'not-found')
.activate();