2016-11-25 41 views
0

這是我的狀態定義:怪異UI-SREF行爲:老PARAMS依然維持在URL雖然試圖改變

$stateProvider 
     .state('app.reports', { 
      url: '/reports?param1&param2', 
      templateUrl: 'app/modules/report/views/reports.html', 
      controller: 'reportController', 
      controllerAs: 'vm' 
     }); 

當我點擊這些,

<a ui-sref="app.reports({param1:'param1'})"> 

它的工作如我所料,它調用我從reportController定義和調用的服務工廠函數,並從REST服務獲取數據並顯示它。而URL是http://.../#/app/reports?param1=param1

點擊此之後,

<a ui-sref="app.reports({param2:'param2'})"> 

它不工作。我的「工廠」功能沒有被調用,沒有任何REST調用,所以數據不會改變。不知何故,網址是http://.../#/app/reports?param1=param1&param2=param2

這是不是很奇怪?

編輯:你可以在這裏看到它,http://plnkr.co/edit/wmfgqY9hCmIj9Bk39NaP?p=preview

+0

下面是解釋和答案:https://github.com/angular-ui/ui-router/issues/3171#issuecomment-265946923 – miqbal

回答

0

這是因爲在你的第二個<a ui-sref>標籤,你的參數1是undefined,因此所產生的URL會http://..../#/app/reports?UNDEFINED&param2=param2

您需要定義參數1,因爲它認爲參數2依賴於它。

我希望這可以解決問題!