我有一个已知的参数A支持值列表.我需要在触发任何状态的结果之前验证状态参数的值,如果值无效,则提供支持的值.我最初的想法是为参数的value属性使用一个注入函数:
params: { A: { value: [ '$stateParams','validator',function validateParamA($stateParams,validator) { // return some value } } } }
但是,$stateParams在这一点上没有填充(我希望预览版本就像你得到的解决方案一样),而且这可能会设置一个默认值,而不是$stateParam本身的值.所以我正在寻找像urlRouterProvider.when的$match这样的东西.
我的下一个想法是只使用urlRouterProvider.when.没有骰子:令我沮丧的是,在国家解决之后,这场大火.
我的下一个想法是劫持urlMatcherFactory的编码.同样的交易(火灾之后).
更新
啊!问题是控制器正在通过ngController在UI路由器外部执行.移动它应该修复序列问题(然后什么时候应该工作).今天晚些时候会更新.
解决方法
MarcherFactory做了这个伎俩.在我纠正了ngController废话并将这些控制器带入UI路由器之后,它就像我预期的那样工作.
// 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) }; } ] );
:愤怒: