angularjs – UI路由器:如何在状态解析之前验证参数

前端之家收集整理的这篇文章主要介绍了angularjs – UI路由器:如何在状态解析之前验证参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个已知的参数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)
            };
        }
    ]
);

:愤怒:

猜你在找的Angularjs相关文章