作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经获得了参数 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/
我是一名优秀的程序员,十分优秀!