gpt4 book ai didi

angularjs - 在 ui-router 中使用 "bool"参数类型的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-04 02:04:58 24 4
gpt4 key购买 nike

我一直在尝试通过 ui-router 使用 param 类型,但似乎无法正确使用它们。
$stateProvider.state({
name: 'home.foo',
url: '/foo/{isBar:bool}',
controller: function() { },
templateUrl: 'foo.html'
});

我的期望是我应该能够像这样过渡到那个状态:
$state.go(home.foo, { isBar: false })
或者
ui-sref="home.foo({ isBar: false })"
但是在结果 $stateParams 中你会看到 isBar: true

看着'bool'的方式param type is written我想 true/false 应该在 url 上编码为 0/1 但这不会发生。如果在 $state.go 的 params 中使用 0/1 那么它就可以工作并被解码为 false/true 但为了进一步混淆这个问题,如果使用 ui-sref,这将不起作用。

希望这个plunker会更好地解释它。任何提示表示赞赏!

编辑:我使用 bool param 类型的目标是在 $stateParams 中得到一个 bool 数据类型

最佳答案

有一个updated and working plunker with boolean 自定义类型

万一,我们想使用 bool 喜欢类型,其中
期望并接受:

true, false, 0, 1



我们只需要注册我们的自定义类型:
app.config(['$urlMatcherFactoryProvider', function($urlMatcherFactory) {

$urlMatcherFactory.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/
})

}]);

然后我们可以在任何状态内使用这个 url 定义:
...
, url: '/foo/{isBar:boolean}'
...

注意:为什么 boolean ?不是 bool ?因为 bool已注册 0|1就目前我所记得的

查一下 here

原来的

使用“字符串”的简单解决方案 in this updated plunker ,
... // states definitions
, url: '/foo/{isBar:(?:bool|true|0|1)}'

关于angularjs - 在 ui-router 中使用 "bool"参数类型的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27178192/

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