如何设置角度管线参数的可接受值
How to set accepted values for angular route parameter?
我必须制作两种类型的url:/:culture
和/:author
,它们都有一级url参数。虽然区域性是一组预定义的参数,如en
、es
、en-us
、br
、fr
、it
等,但作者可以是数据库中的任何用户名(区域性名称除外)。所以我想制定一个路由,当param在一组区域性中时,可以将用户发送到HomeCtrl
,如果不是,则将他发送到AuthorCtrl
。我能做什么?
.when('/:culture/', {
templateUrl:'partials/home/home',
controller:'vvHomeCtrl'
});
您可以将templateUrl和controller定义为函数,并使此路由类似于:
.when('/:cultureOrAuthor/', {
templateUrl: function(params) {
// AVAILABLE_CULTURES is your predefined array
if(AVAILABLE_CULTURES.indexOf(params['cultureOrAuthor'])!==-1) {
return 'urlForCultures';
} else {
return 'urlForAuthors';
}
},
controller: function($scope, $routeParams) {
if(AVAILABLE_CULTURES.indexOf($routeParams['cultureOrAuthor'])!==-1) {
// first logic
} else {
// second logic
}
}
});
对于简单的控制器来说,这是一个很好的解决方案。否则,请考虑使用来自路由器的解析(文档)。
通过检查区域性参数是否有效,我同意@Mates解决方案。然而,我可能会尝试使用redirectTo
属性来分隔这两条路由。
.when('/:culture/', {
templateUrl:'partials/home/home',
controller:'vvHomeCtrl',
redirectTo:function(routeParams, path, search) {
if(cultures.indexOf(routeParams.culture)!==-1) {
//return path(string) to author route
}
return path;
}
})
.when(/* Author route definition */);
相关文章:
- 使用while循环+break是一种可接受的方式;goto;手术的结束
- javascript外部链接文件的可接受数量是多少
- 如何在Django表单中设置可接受的文件类型'的FileInput小部件
- 动画的可接受帧速率有多高
- 当在JSON中使用包含对象的对象与对象数组时,可接受的约定是什么
- 在AngularJS中,一次进行两次调用是一种可接受的方法
- JavaScript 库如何忽略某些参数,或使某些函数参数“可选”
- 是否有可接受的跨平台方法在基于触摸的设备上以标准 Web 表单显示数字键盘
- Javascript:从给定的两个片段中引用“this”的可接受方式
- 为什么“{foo:function myName(){}}”语法是可接受的
- 为什么设置超时's回调参数可以接受参数
- 限制Sailsjs中可接受的模型属性
- Javascript可视化:svg地图的可接受大小
- Array.from(arguments)是创建参数数组的一种可接受的方法
- 在javascript for html文件中触发具有可接受延迟的事件
- 如何设置角度管线参数的可接受值
- 在HTML中使用右键单击上下文菜单是否安全或可接受
- 同一个函数参数能接受不同的数据类型吗?
- Is e = event || window.event;可接受的IE8兼容性
- 是否有一种可接受的方法可以从函数/方法中省略参数