加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 17:21:16 所属栏目:安全 来源:网络整理
导读:我有一个已知的参数A支持值列表.我需要在触发任何状态的结果之前验证状态参数的值,如果值无效,则提供支持的值.我最初的想法是为参数的value属性使用一个注入函数: params: { A: { value: [ '$stateParams','validator',function validateParamA($stateParam
我有一个已知的参数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)
            };
        }
    ]
);

:愤怒:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读