gpt4 book ai didi

angularjs - Angular ui 路由器将查询参数解析为 bool 值

转载 作者:行者123 更新时间:2023-12-04 23:20:48 25 4
gpt4 key购买 nike

考虑具有查询参数的状态的这种场景。我想将它们声明为标志,以便我可以在 Controller 中获取并获取 true , falseundefined

$stateProvider.state('foo.bar', {
url: '/foobar?flag1&flag2',
templateUrl: 'foo/bar/template.tpl.html',
controller: 'FooBarCtrl'
});

myModule.controller('FooBarCtrl', function($stateParams){
$stateParams.flag1 <<--- is string but can it be of type bool?
$stateParams.flag2 <<--- is string but can it be of type bool?

});

一些网址示例:
/foobar?flag1=true    -->> should yield {flag1: true, flag2: undefined}
/foobar?flag2=false -->> should yield {flag1: undefined, flag2: false}
/foobar?flag1=false&flag2=true -->> should yield {flag1: false, flag2: true}
/foobar?flag1=1&flag2=0 -->> should yield {flag1: true, flag2: false}

etc...

目前 $stateParams 只提供字符串。是否可以让路由器将参数解析为标志?这比在 Controller 中手动解析要优雅得多。

最佳答案

您应该可以使用 bool 作为一种

url: '/foobar?{flag1:bool}&{flag2:bool}',

但我们甚至可以使用我们的 定制 类型(我们称之为 boolean ):
app.config(['$urlMatcherFactoryProvider', function($urlMatcherFactory) {
$urlMatcherFactory.type('boolean',
{
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/
})
}]);

以及 的状态定义网址 会是这样的:
url: '/foobar?{flag1:boolean}&{flag2:boolean}',

这应该有效:
<a ui-sref="foobar({ flag1: 0, flag2:true })">
<a ui-sref="foobar({ flag1: 1, flag2:false })">

这是 plunker with example

关于angularjs - Angular ui 路由器将查询参数解析为 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27422848/

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