2013-06-20 19 views
0

我正在開發一個帶durandal的SPA網站。
這裏是我的路由器的配置:當人們直接點擊路由器時如何更改路由器中的網址?

var routes = [{ 
    url: 'profile', 
    moduleId: 'viewmodels/profile', 
    name: 'Profile', 
    visible: true 
}, { 
    url: 'batchOverview', 
    moduleId: 'viewmodels/batchOverview', 
    name: 'Batche Overview', 
    visible: true 
}, { 
    url: 'batch', 
    moduleId: 'viewmodels/batch', 
    name: 'Batche Detail', 
    visible: true 
}, { 
    url: 'page', 
    moduleId: 'viewmodels/page', 
    name: 'Page', 
    visible: true 
}]; 

當人們直接點擊路由器,在地址欄中的URL是這樣的:

http://localhost:7778/#/batch 

我想的是,我可以添加paramenters到人們直接點擊路由器時的URL。 的URL可能看起來像這樣:

http://localhost:7778/#/batch?pId=Gridsum&batchId=3 

現在我可以用router.navigateTo(URL),使其當人們點擊自定義按鈕。但是當人們直接點擊路由器並動態改變參數時,我需要做到這一點。

我不知道如果我在router.map()中設置一個observable是否會好。但我認爲這不是一個好方法。有沒有更好的解決方法?

+0

當你說:「當我直接點擊路由器」你的意思是當用戶點擊一個鏈接? – Damien

+0

@Damien是的。對不起,我會糾正它。 – wolfgod

+0

那你爲什麼不用這個url設置href的鏈接呢? http:// localhost:7778 /#/ batch?pId = Gridsum&batchId = 3 – Damien

回答

0

您可以在主視圖模型上添加一個observable屬性,該屬性包含批處理url(帶參數)。 將此網址綁定到您菜單的鏈接。 通過這樣做,您將需要創建一個具有參數的新路線。例如: /#/批次?pId =:pID & batchId =:bID

Durandal路由基於SammyJS。所以,如果你需要更多的信息路由參數,請看看:SammyJS routes

我希望它有幫助。

+0

謝謝你的回答。我會嘗試你的方法。 – wolfgod

+0

最後我得到這個:router.visibleRoutes()[1] .hash ='#/ batchOverview?pId ='+ encodeURIComponent(vm.profiles()[xx] .Id());這可以讓我在任何地方修改路由器的網址。對不起,我忘了說我在nav.html中使用了哈希attr。 – wolfgod

相關問題