2016-12-29 144 views
0

我正在將我的應用程序從使用簡單的Angular路由器服務轉換爲UI-Router。我有一個來自搜索字段的參數。在Angular提供的路由器服務中,如果我們搜索空的輸入字段,由於其他功能,URL被重定向到主頁,但是在UI-Router中,它轉到這個URL http://localhost:3000/#/resultPage//1URL中的UI路由器空參數

我試圖用正則表達式的參數,但它沒有奏效。我現在用的代碼波紋管

   $urlRouterProvider.otherwise('/'); 
 

 
       .state("resultpage", { 
 
        url: "/resultPage/{searchParameter:[0-9a-zA-Z]+}/{pageParameter:[0-9]}", 
 
        templateUrl: "templates/resultpage.html", 
 
        controller: "resultController", 
 

 
       })

提到我怎樣才能確保如果任何paramters的省略形式網址URL重定向到主頁?

回答

0

傳遞變量而不是直接值。 例如,url: "/resultPage/:paramOne/:paramTwo",這裏是paramOneparamTwo是從ui-sref傳遞的參數。 現在在控制器中添加$stateParams來依賴注入來獲取url參數。

app.controller('myCtrl', function($scope, $stateParams, $state){ 
    if(!$stateParams.paramOne || !$stateParams.paramOne){ 
     $state.go('', {}); // redirecting to '/' 
    } 
}) 

現在,是時候從您想要訪問的位置設置狀態名稱。

例如:

<a ui-sref="resultPage({paramOne: {searchParameter:[0-9a-zA-Z]+}, paramTwo: {pageParameter:[0-9]} })" 
+0

感謝您的回覆。我試圖使用該代碼,但Angular給我的語法錯誤。不知道我缺少什麼 – user3932437

0

你或許應該使用查詢參數而不是這個用例。檢查文檔的第一段:https://ui-router.github.io/docs/0.3.1/#/api/ui.router.util.type:UrlMatcher

+0

我不確定你使用查詢參數的意思。該鏈接不會談論我的特殊問題。你能否進一步闡述? – user3932437

+0

這裏有一個更好的鏈接:https://github.com/angular-ui/ui-router/wiki/URL-Routing,向下滾動到「查詢參數」部分。如果您希望URL匹配不那麼嚴格,那麼它們基本上只是您可以使用的較少結構化的參數。 –