我有一个 Durandal 应用程序,其路由如下。
activate: function () {
return router.map([{
route: 'friends',
moduleId: 'viewmodels/friends',
nav: true
}, {
route: 'about',
moduleId: 'viewmodels/about',
nav: true
}, {
route: '(:id)',
title: 'TimeLine',
moduleId: 'viewmodels/Posts',
nav: true
}, ]).buildNavigationModel()
.activate();
但是每次我们导航到“ friend ”或“关于”时,它都会转到“viewmodel/Post”,其中“ friend ”和“关于”关键字是“id”。我无法转到“viewmodels/ friend ”和“viewmodels/about”。有人可以帮助我吗?
最佳答案
确保在 viewmodels/
中您有一个名为 posts.js
的文件,并且您的 moduleId 不是 moduleId: 'viewmodels/posts'
moduleId: 'viewmodels/Posts'
和 posts.js
必须相同
将代码更改为:
activate: function () {
return router.map([{
route: ['', 'friends'],//this is the home route ['', 'routeName']
moduleId: 'viewmodels/friends',
nav: true
}, {
route: 'about',
moduleId: 'viewmodels/about',
nav: true
}, {
route: 'posts/(:id)',// and change this from (:id) to posts/:id or posts/(:id)
title: 'TimeLine',
moduleId: 'viewmodels/posts',
nav: true
}, ]).buildNavigationModel()
.activate();
在您的 posts.js
中,您可以像这样访问 id
var postId;
function activate(id) {
postId = id;
logger.log(viewModel.title + "'s View Activated", null, viewModel.title, true);
return true;
}
function attached(view, parent) {
alert(postId);
}
var viewModel = {
activate: activate,
title: 'singlePost',
attached: attached
}
return viewModel;
了解更多关于 Mapping Routes
关于javascript - 带参数的 Durandal 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24572515/