簡體   English   中英

帶角度ui-router的多個可選參數

[英]Multiple optional parameters with angular ui-router

我試圖使用ui-router多個可選參數但它似乎不起作用。 以下是我做的測試:

單個參數可以

state.url       url called     state param values

/page/:x        /page/         $stateParams.x == ""
/page/:x        /page/2        $stateParams.x == "2"

一個可選參數是OK

/page/:x?       /page/         $stateParams.x == ""
/page/:x?       /page/2        $stateParams.x == "2"

兩個參數都可以(除了第一種情況下丑陋的雙斜線, /page/page/轉到/page// 。但是因為參數不是可選的,所以沒問題)

/page/:x/:y     /page//        $stateParams.x == "" && $stateParams.y == ""
/page/:x/:y     /page/2        $stateParams.x == "" && $stateParams.y == ""
/page/:x/:y     /page/2/       $stateParams.x == "2" && $stateParams.y == ""
/page/:x/:y     /page/2/3      $stateParams.x == "2" && $stateParams.y == "3"

兩個可選參數表現很奇怪。 第二個參數總是未定義的,當我指定第二個參數時,它不能解決第一個參數。

/page/:x?/:y?   /page/         $stateParams.x == "" && $stateParams.y == undefined
/page/:x?/:y?   /page/2        $stateParams.x == "2" && $stateParams.y == undefined
/page/:x?/:y?   /page/2/       $stateParams.x == "" && $stateParams.y == undefined
/page/:x?/:y?   /page/2/3      $stateParams.x == "" && $stateParams.y == undefined

未通過修改URL指定UI-Router可選參數。 相反,它們是使用狀態定義中的params對象指定的。

聲明url: '/page/:x?/:y?' 不會將x和y標記為可選參數。 相反,問號用於分隔URL的URL和Query Param部分。

閱讀UrlMatcher文檔中的描述文本和url$ stateProvider.state文檔,然后閱讀params

你最終會得到如下配置的可選參數:

$stateProvider.state('page', {
  url: '/page/:x/:y',
  params: { 
    x: 5,  // default value of x is 5
    y: 100 // default value of y is 100
  }
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM