我有一個Aurelia項目,使用MVC服務器端路由。我使用一個指向主「應用程序」組件的佈局文件,像這樣:如何在服務器端路由中使用Aurelia路由器
<div aurelia-app="main" start="app" data-model='@Json.Encode(Model)'></div>
我的每個視圖包含這樣的佈局文件和一些參考:
<div aurelia-app="main" start="sample-module" data-model='@Json.Encode(Model)'></div>
我main.js配置是這樣的:
export function configure(aurelia) {
aurelia.use.standardConfiguration()
aurelia.container.registerInstance('viewModel',
Object.assign({}, JSON.parse(aurelia.host.dataset.model)));
aurelia.start().then(a => {
let start = a.host.attributes.start.value;
a.setRoot(start);
});
}
而且我利用Aurelia路上的路由器(在app.js)是這樣的:
export class App {
constructor() {
}
configureRouter(config, router) {
config.title = 'Aurelia';
config.options.pushState = true;
config.options.root = '/';
config.map([
{ route: ['', 'Aurelia/Home'], name: 'home', moduleId: 'home', title: 'home', nav: false },
{ route: 'Aurelia/SampleModule', name: 'sample module', moduleId: 'sample-module', title: 'sample module', nav: true },
]);
this.router = router;
}
}
這差不多的作品。如果我使用Aurelia導航鏈接導航到SampleModule
,它會加載模塊但不會觸及服務器 - 甚至不會觸及視圖。如果我手動導航到Aurelia/SampleModule
,它會加載sample-module
兩次,包括來自服務器的數據。 Aurelia路由器完全按照我的預期更新網址,因此如果我瀏覽然後點擊刷新,它會正確加載服務器。
我希望能夠使用導航來更改視圖而不刷新整個頁面,但仍然利用我的服務器端路由並擊中視圖和控制器。