2014-02-17 37 views
3

這是我試圖實現的:當用戶輸入的URL與$stateProvider中配置的狀態的任何URL模式都不匹配時,狀態應設置爲默認狀態,例如'notFound'。進入這個狀態必須保持URL不變,所以用戶有機會糾正它。這就是爲什麼我不使用$urlRouterProvider.otherwise()如何在AngularJS ui-router模塊中指定默認狀態

目前,我用以下解決方法工作:在我的主控制器我是否

$state.current.name == '' 

如果是這樣的話,我設置'notFound'狀態。

$state.go('notFound', {}, { location: false }); 

然而,這似乎有點像一個黑客,因爲我認爲有是配置module.config()所有這一切的方式,但我不知道怎麼辦。對此有何想法?

回答

3

我自己找到了解決方案:可以在URL中使用正則表達式參數。所以,你可以定義一個「包羅萬象」的狀態作爲$stateProvider註冊這樣的一個狀態:

$stateProvider.state('notFound', { 
    url: '{path:.*}', 
    templateUrl: '/notFound.html' 
}); 

如果沒有其他網址格式匹配,這種狀態將被選中,完整的路徑可以通過$stateParams.path訪問。

+0

這幫了我很多謝謝,你可以接受你自己的答案btw :) – JMK