gpt4 book ai didi

angularjs - 用户界面路由器 : How to validate parameter before state resolves

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

我已经获得了参数 A 的已知支持值列表。我需要在触发任何状态解析之前验证状态参数的值,如果该值无效,则提供支持的值。我最初的想法是对参数的 value 属性使用可注入(inject)函数:

params: {
A: {
value: [
'$stateParams',
'validator',
function validateParamA($stateParams, validator) {
// return some value
}
}
}
}

但是,此时 $stateParams 尚未填充(我希望有一个像您在解析中获得的预览版本),而且这可能会设置一个默认值,而不是$stateParam 本身。所以我正在寻找类似 urlRouterProvider.when$match 的东西。

我的下一个想法是只使用urlRouterProvider.when。无骰子:令我沮丧的是,这在状态解决后触发。

我的下一个想法是劫持 urlMatcherFactory 的编码。同样的交易(之后触发)。

更新

呃!问题是 Controller 正在 UI Router 之外通过 ngController 执行。将其移入内部应该可以解决顺序问题(然后何时应该起作用)。今天晚些时候更新。

最佳答案

MarcherFactory 做到了这一点。在我纠正了 ngController 的废话并将这些 Controller 引入 UI Router 后,它的工作正如我所预期的那样。

// url: '/{locale:locale}'

function validateLocale(validator, CONSTANTS, value) {
var match = validator(value);

if (match === true) {
return value;
}

if (match) { // partial match
newLocale = match;
} else {
newLocale = CONSTANTS.defaultLocale;
}

return newLocale;
}

$urlMatcherFactoryProvider.type(
'locale',
{
pattern: ROUTING.localeRegex
},
[
// …
function localeFactory(validator, CONSTANTS) {
return {
encode: validateLocale.bind({}, validator, CONSTANTS)
};
}
]
);

:愤怒:

关于angularjs - 用户界面路由器 : How to validate parameter before state resolves,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32411243/

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