gpt4 book ai didi

angularjs - 仅具有特定值的路由的 ui-router

转载 作者:行者123 更新时间:2023-12-01 23:42:52 25 4
gpt4 key购买 nike

我正在尝试为具有以下结构的多个唯一着陆页构建路由

domain.com/:state/:city/:category

如何定义路线,以便州、城市和类别只能是预定义值之一,又名:

state =/ca|ma|ak|az|ar .../i
city =/洛杉矶|旧金山|.../i
category =/painting|plumbing|.../i

这些列表很长,所以拥有一个巨大的正则表达式没有多大意义(或者是吗?)

我会使用 rule() 吗? $urlMatcherFactory?如何使用函数?

任何帮助表示赞赏。提前致谢

最佳答案

这里的方法是使用自定义类型

如图所示Q & A , 以防我们想要创建某种类型来准备处理值 true, false, 1, 0作为 boolean,我们可以这样定义它(有 also working plunker ):

app.config(['$urlMatcherFactoryProvider', function($urlMatcherFactoryProvider) {

$urlMatcherFactoryProvider.type('boolean',
// our type custom type
{
name : 'boolean',
decode: function(val) { return val == true ? true : val == "true" ? true : false },
encode: function(val) { return val ? 1 : 0; },
equals: function(a, b) { return this.is(a) && a === b; },
is: function(val) { return [true,false,0,1].indexOf(val) >= 0 },
pattern: /bool|true|0|1/
})

}]);

我们可以用同样的方式定义我们的类型

$urlMatcherFactoryProvider.type('state'   , ...
$urlMatcherFactoryProvider.type('city' , ...
$urlMatcherFactoryProvider.type('category', ...

稍后我们可以将它们用于任意数量的状态定义:

...
.state('mystate', {
url: 'xxx/{state:state}/{city:city/{category:category}
...

这一切都可行,因为我们可以为 UrlMatcher 定义 url像这样

'{' name ':' regexp|type '}' - curly placeholder with regexp or type name. Should the regexp itself contain curly braces, they must be in matched pairs or escaped with a backslash.

因此,不仅是正则表达式 - type - 包括我们自定义的

关于angularjs - 仅具有特定值的路由的 ui-router,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30493625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com