在angular路由中使用正規表示式
本文源於對stackoverflow上一道問題的思考:如何在正則angular路由中使用正規表示式中的萬用字元*
在使用angular的過程中,我們經常需要通過不同的url定位到不同的頁面。 這時候我們就可以藉助angular的routeProvider提供的when方法來實現,比如
myApp.config(['$routeProvider', '$httpProvider',function($routeProvider,$httpProvider) {
//配置路由
$routeProvider.
when('/tab1', {
templateUrl: 'sections/tab1.html',
controller: 'Tab1Ctrl',
}).
when('/tab2', {
templateUrl: 'sections/tab2.html',
controller: 'Tab2Ctrl',
}).
when('/tab3', {
templateUrl: 'sections/tab3.html',
controller: 'Tab3Ctrl',
}).
otherwise({
redirectTo: '/tab1'
});
when方法的原型是:when(path, route),其中path
path可以包括以冒號開頭的命名組,比如/tab1/:item
path可以包含以冒號開頭並以星號結束的命名組,比如/tab1/:item*
path可以包含以冒號開頭並以問號結束可選的命名組,比如/tab1/:item?
比如,path為:/color/:color/largecode/:largecode*\/edit
會匹配/color/brown/largecode/code/with/slashes/edit
會匹配:
color: brown
largecode: code/with/slashes
但是如果我們要實現以/tab1
開頭的url全部路由到/tab1
呢?比如/tab1active
、/tab1touch
等都路由到/tab1
。用正規表示式描述就是:/tab1.*全部路由到/tab1,使用上述的when方法我們無能為力了。
於是有人出來叫喧說,angular的路由連正規表示式都不支援,實在太弱了,但是其實我們是有方法實現完全按正則進行路由分發地。angular有個$locationChangeStart
事件,我們可以監聽這個事件,修改location。下面的例子就可以實現以/tab1開頭的url全部路由到/tab1,即/tab1.*
全部路由到/tab1
。
myApp.config().run(['$rootScope','$location',function($rootScope,$location){
$rootScope.$on('$locationChangeStart',function(event,next,current){
var path = /#\/(tab1).*/i.exec(next);
if(path && path[1]){
$location.path('/tab1');
}
});
}]);
在事件$locationChangeStart
觸發時,我們就對路由的變化有了全部的控制,各種正則匹配自然不在話下。
本文同時發表在我的部落格積木村の研究所 :http://foio.github.io/angular-route/
相關文章
- 正規表示式在Java中的使用Java
- 在 Shell 中轉換 Python 正規表示式Python
- 正規表示式匹配${key}並在Java中使用Java
- iOS-正規表示式使用iOS
- JS中的正規表示式JS
- Linux中基本正規表示式Linux
- java中的正規表示式Java
- js中在迴圈中使用正規表示式遇到的小坑JS
- 正規表示式
- 正規表示式.
- python中re模組的使用(正規表示式)Python
- Grep(Regex)中的正規表示式
- 談談正規表示式中的 “.”
- js中的正規表示式(1)JS
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- 在Delphi中使用正規表示式校驗身份證號
- 無法在 nginx 的 “if” 正規表示式中使用變數?Nginx變數
- 常用正規表示式
- JavaScript 正規表示式JavaScript
- MySQL正規表示式MySql
- 正規表示式(java)Java
- SQL正規表示式SQL
- python正規表示式Python
- 正規表示式合集
- 正規表示式(一)
- Python 正規表示式Python
- Python——正規表示式Python
- PHP正規表示式PHP
- 正規表示式概括
- javascript正規表示式JavaScript
- java正規表示式Java
- Shell正規表示式
- 正規表示式 教程
- 正規表示式 【四】
- 正規表示式匹配
- Python:正規表示式Python
- php –正規表示式PHP
- 【Linux】正規表示式Linux
- 【JavaScript】正規表示式JavaScript