2016-09-08 51 views
2
$stateProvider.state('state1', { 
    url:'/state1/:param1/and/{param2:.+}', 
    templateUrl: 'state1.html', 
    controller: 'State1Controller', 
}); 

我想通過使用正則表達式所需的param2如上所見。如果它是空的,則默認狀態應該加載:角度用戶界面路由器 - 如何使參數需要

$urlRouterProvider.otherwise("/"); 

    $stateProvider.state('otherwise',{ 
     url: '/', 
     templateUrl:'default.html' 
    }); 

現在的結果:

state1/1/and/1state1。好。

state1/1/and轉到otherwise。好。

但是,

state1/1/and/進入狀態全無!這兩個國家都沒有加載。它不會重定向到/。什麼?!

如何正確設置參數?

+0

State1Controller中有什麼?你控制檯中的任何東西?聽起來像'state1'中的某些東西可能正在炸燬。是什麼讓你覺得「這兩個國家都沒有裝貨」 - 你錯過了一個觀點? – adamdport

+0

'state1.html'未加載。 'ui-view'是空白的。我還在'State1Controller'中放置了一個'console.log('loaded')',並且沒有輸出到控制檯。沒有錯誤。 – Shawn

+2

以下plunker正如你所期望的那樣工作:http://plnkr.co/edit/XTDJ5FAHNh63RoECKwCQ?p=preview –

回答

1

默認情況下,角度js ui-router url參數是可選的。對於上述情況,我們可以使用$ stateParams來檢查是否定義了所需的參數。請檢查下面的代碼。

if ($stateParams.param2=== undefined) { 
    // Navigate to home. 
    $location.path('/'); 
} 

希望這會解決您的問題。謝謝。