2015-02-23 37 views
1

我有一個路線,其格式爲YYYY-MM-DD的日期的可選參數。如果沒有提供日期,我會提供今天的日期。 我定義我的路線,像這樣:使用默認參數如何重寫url?

.state('some.report', { 
    url: '/report/:reportDate', 
    templateUrl: 'app/report/report.html', 
    params:{reportDate:moment().format('YYYY-MM-DD')}, 
    controller: 'reportCtrl', 
    }) 

這工作,在控制器的參數確實是今天的日期,但是我如何改變它,這樣網址將成爲:: http://local/some/report/2015-02-23

回答

3

的網址仍然是http://local/some/report/我會說,你的狀態定義應該工作,爲顯示this working example

我們也可以用設置squash: false

迫使它
.state('some_report', { 
     url: '/report/:reportDate', 
     templateUrl: 'tpl.html', 
     params: { 
     reportDate: { 
      value: moment().format('yyyy-MM-dd'), 
      squash: false, 
     } 
     }, 
     controller: 'reportCtrl', 
    }); 

更多關於這在DOC:API reference $stateProvider

壁球 - {bool|string=}:壁球配置默認的參數值是如何在這個URL時,當前的參數值是一樣的默認值。如果沒有設置壓扁,則使用配置的默認壓扁策略。 (見defaultSquashPolicy())

有三個壁球設置:

  • false:該參數的默認值未壓扁。它被編碼幷包含在URL中
  • true:參數的默認值從URL中省略。如果該參數在狀態的url聲明中前後跟有斜槓,那麼其中一個斜槓將被忽略。這可以允許更清晰的外觀網址。
  • "<arbitrary string>":將參數的默認值替換爲您選擇的任意佔位符。

檢查它here

+1

真棒!正是我想要的。 – 2015-02-23 19:04:11