2016-03-25 50 views
0

我有代理列表並希望對其中的每一個做一些事情。對於「做某事」,我查看了代理列表,嵌套父視圖,處理導航以及代表導航的子視圖集。重新導航後路由器鏈路不再更新

最頂層視圖視圖模型:

configureRouter(config: RouterConfiguration, router: Router) { 
    config.title = 'Agents'; 
    config.map([ 
     { route: '', name: 'dummy', moduleId: 'components/agents-components/dummy', nav: false }, 
     { route: ':id', name: 'agent', moduleId: 'components/agents-components/agent-details', nav: false } 
    ]); 

    this.router = router; 
} 

查看「僞」時沒有選擇劑顯示。

代理的詳細信息,查看視圖模型:

configureRouter(config: RouterConfiguration, router: Router) { 
    config.title = ''; 
    config.map([ 
     { route: 'info', name: 'agent-info', moduleId: 'components/agents-components/agent-info', title: 'Info', nav: true }, 
     { route: 'add', name: 'agent-add', moduleId: 'components/agents-components/agent-add', title: 'Add', nav: true } 
    ]); 

    this.router = router; 
} 

和HTML:

<li repeat.for="row of router.navigation" class="${row.isActive ? 'active' : ''}"> 
    <a href.bind="row.href">${row.title}</a> 
</li> 

URL方案類似/代理商/ 764 /信息或/代理商/ 764 /加

後點擊代理#764我從代理詳情視圖中顯示路線「信息」並使用

activate(params) { 
    this.id = params.id; 
} 

獲取代理人的ID。一切正常,代理細節視圖中的鏈接是正確的,幷包含當前代理的ID(/ agents/764/info和/ agents/764/add),我可以選擇標籤「添加」並執行一些操作。

但是,然後我點擊其他代理,地址欄中的網址變爲/代理/ 765 /信息,並在信息的激活(PARAMS)我得到正確的ID。但是,配置代理詳情視圖的路由器並不會調用html鏈接,而是在html still/agents/764/info和/ agents/764/add中鏈接。所以當我點擊鏈接「添加」時,我將添加以前代理的視圖。

我該如何解決它?有什麼辦法強制重新呈現代理細節視圖?或者我應該手動修復agent-details activate()中的路由,甚至在html中將鏈接綁定到手動創建的屬性而不是router.navigation?

回答

1

要強制路由器配置只需添加到代理的細節視圖模型:

import {activationStrategy} from 'aurelia-router'; 
... 
determineActivationStrategy(){ 
    return activationStrategy.replace; 
} 
相關問題