2017-01-19 29 views
3

頁面刷新後如何保持狀態的url參數?頁面刷新後的角度UI路由鬆散的URL參數

我有這樣的狀態

.state('App.State', { 
     abstract: true, 
     url: '/App/:param', 
     templateUrl: '/page.html', 
     controller: 'pageCtrl', 
     params: { 
      'param': null, 
     }, 

    }) 

我去這個狀態,這個命令

<a ui-sref="App.State({param: paramName})">{{paramName}}</a> 

我去的狀態,與我想要的參數,可以,但是當我刷新頁面(F5 )我鬆散的參數,如何保持頁面刷新後他們?

回答

0

爲了保持值應該在URL中添加參數是這樣的:

url: '/App/:param' 

,並刪除params屬性。

1

有一個plunker這確實移除代碼abstract: true

.state('App', { 
     template: '<div ui-view ></div>', 
}) 
.state('App.State', { 
     //abstract: true, 
     url: '/App/:param', 
     templateUrl: 'page.html', 
     controller: 'pageCtrl', 
     params: { 
     'param': null, 
     }, 
    }) 

,然後我們可以使用任何種類的URL(甚至F5後)達到那個狀態

如果我們想保留這個狀態摘要 - 我們不能導航到它。我們需要它的孩子。有other plunker

.state('App', { 
     template: '<div ui-view ></div>', 
}) 
.state('App.State', { 
     //abstract: true, 
     url: '/App/:param', 
     templateUrl: 'page.html', 
     controller: 'pageCtrl', 
     params: { 
     'param': null, 
     }, 
}) 
.state('App.State.Child', { 
     url: "/", 
     template: '<h4> App.State.Child </h4>', 
}) 

與UI SREF不能

<a ui-sref="App.State({param: 'xxx'})"> 
    -- not working while abstract 

我們必須去孩子

<a ui-sref="App.State.Child({param: 'yyy'})"> 

而這些會對你有幫助

+0

請問第二種方法(保持抽象狀態)工作的多個參數,可以即params對象有兩個密鑰,但只有一個顯示在路線? [鏈接](http://stackoverflow.com/questions/41757390/reload-not-working-when-passing-multiple-params-in-ui-router-state) –

+0

點是.. ** url **是唯一的部分 - 將在刷新之後倖存下來(或者發送URL並在稍後打開)*答案是否定的。只有'url'的東西才能存活下來。希望它有點幫助;)享受UI路由器 –

+0

請看看這個[問題](http://stackoverflow.com/questions/41757390/reload-not-working-when-passing-multiple-params-in- UI路由器狀態)。你能否建議一個更好的方法來實現相同? –