我有一个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路由器完全按照我的预期更新网址,因此如果我浏览然后点击刷新,它会正确加载服务器。
我希望能够使用导航来更改视图而不刷新整个页面,但仍然利用我的服务器端路由并击中视图和控制器。