2017-04-17 73 views
1

我工作的應用程序有一個基本href通過時基本href是目前更新location.path更改UI路由器狀態

<base href="/xyz/"> 

和國家配置類似於

.state('state1', { 
     url: '/abc/:def/:ghi', 
     views: 'view1', 
    }) 
    .state('state2', { 
    url:'/abc/:def/:ghi/jk/:123/:456', 
     views: 'view2', 
    }) 

,並獲得我做

var browserUrl = $state.href($state.current.name, $state.params, { absolute: false }); 

當前的URL這回我

/xyz/abc/:def/:ghi 

我沒有問題,當我做$ state.go轉到state2,但如果我使用$ location.path來更新URL,那麼UI路由器無法匹配狀態,因爲基礎href存在於newUrl。要更新我做

var 123Id = 'item1'                
var 456Id = 'item2' 
var newUrl = [browserUrl, 'jk', 123Id, 456Id].join('/'); 
$location.path(newUrl) 

這是行不通的,因爲browesrUrl包含基本href狀態,任何想法如何通過更新位置,使這方面的工作?

+0

爲什麼'包含完整browserUrl browserUrl'?你可以把'browserUrl'的輸出添加到你的'join()'函數中嗎? – lin

+0

@lin它擁有基礎href,因爲我使用$ state.href動態生成url – Venkat

回答

1

一個簡單的解決方法是使用$location.url()而不是$location.path()url()能夠以這種方式,你可以生成一個絕對URL一樣來處理絕對網址:

var browserUrl = $state.href($state.current.name, $state.params, { absolute: true }); 
$location.url(browserUrl); 
+0

而不是執行$ state.href($ state.current.name,$ state.params,{absolute:true});使用$ location.path()解決了我的問題。但我已經測試了你的解決方案,並且它的工作太 – Venkat

+0

@Venkat很高興幫助ya.I'm想知道它也可以用'$ location.path()',因爲它以不同的方式記錄「一個路徑應該以' /'」 ...... – lin

相關問題