2016-03-25 18 views
0

私はエージェントのリストを持っていて、それぞれについて何かしたいと思っています。 「何かをする」ために、私はエージェントのリスト、ネストされた親ビュー、ナビゲーションを処理するビュー、ナビゲーションを表す子ビューのセットを持つビューを持っています。再表示後にルータのリンクが更新されない

ほとんどのトップレベルのビューのviewmodel:何エージェントが選択されていない

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; 
} 

ビュー "ダミー" が表示されます。

エージェントの詳細は、のviewmodelを表示:

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/INFOまたは/薬のようなもの/ 764 /後

を追加することですエージェント#764をクリックします。エージェントの詳細ビューから「info」ルートを表示しています。

activate(params) { 
    this.id = params.id; 
} 
01エージェントのIDを取得するために

すべては今まで働いていて、エージェント詳細ビューのリンクは正しいですし、現在のエージェントのID(/ agents/764/infoおよび/ agents/764/add)を含んでいます。

しかし、私は他のエージェントをクリックしています。アドレスバーのURLは/ agents/765/infoになり、infoのactivate(params)では正しいIDを取得しています。しかし、エージェントの詳細ビューのconfigureRouterは、HTMLのstill/agents/764/infoおよび/ agents/764/addの呼び出しとリンクではありません。だから、私がリンク "Add"をクリックしているとき、私は前のエージェントのビューを追加するつもりです。

どうすれば修正できますか?エージェント詳細ビューを強制的に再レン​​ダリングする方法はありますか?または、エージェントの詳細のactivate()を手動で修正するか、またはhtmlのリンクをrouter.navigationではなく手動で作成したプロパティにバインドする必要がありますか?ちょうどエージェント詳細に追加設定するルータを強制的に

答えて

1

はViewModelに:

import {activationStrategy} from 'aurelia-router'; 
... 
determineActivationStrategy(){ 
    return activationStrategy.replace; 
} 
関連する問題