angular中?请求的路由处理和参数获取

        最近在用ionic搞微信的身份认证,微信的接口会默认跳转到一个地址,例如:redirect_uri/?code=CODE&state=STATE这样的,它里面有个?号,着实让我纠结了好半天,现在我总结一下他的用法。


1、先看正确的。

路由写法

.state('tab.chat-detail', {
  url: '/chats/?code&name',
  views: {
    'tab-chats': {
      templateUrl: 'templates/chat-detail.html',
      controller: 'ChatDetailCtrl'
    }
  }
})


然后看请求和参数结果

angular中?请求的路由处理和参数获取_第1张图片

网址是这样也可以得到

angular中?请求的路由处理和参数获取_第2张图片

2、再说一下错误的情况

①路由写成这样

  url: '/chats/?',

可以进入路由但是$stateParams没有code和name属性

②路由写成这样那

  url: '/chats/?code',

结果就是

angular中?请求的路由处理和参数获取_第3张图片

③如果是这样那

  url: '/chats/?code=:chatId&name',

结果如图,这也就是之前我一直获取不到chatId的值的问题,他也变为一个属性了

angular中?请求的路由处理和参数获取_第4张图片


3、补充

        其实网上还有一些写法/tab*/:chatId,这种号称能模糊匹配,还有这样的/tab/{path:.*},不太清楚这些用法,我自己试了,进不去路由,可能是哪里写错了,大家还可以看一下ui-router获取参数的匹配正则(源代码)。


        比如要进行身份验证之类的操作,可以直接写一个路由,然后不给页面,因为生命周期是先走controller,再走view,处理完一些逻辑之后,直接跳转

4、扩展

        其实还可以用正则表达式匹配,大家看一下这个文章http://www.cnblogs.com/hughtxp/p/3965916.html


5、福利时间

angular中?请求的路由处理和参数获取_第5张图片



你可能感兴趣的:(?,ui-router,anguler)