我无法使用参数
从一个视图导航到另一个视图来自: -
ViewModel : App/Foldername/page1.js
View : App/Foldername/page1.html
我想使用id参数:
ViewModel : App/Foldername/page2.js
View : App/Foldername/page2.html
在 page1.js 中我写了以下内容,
self.goTopage2 = function (id) {
router.mapRoute('Foldername/page2/:id', 'viewmodels/Foldername/page2', 'This is page2view');
};
shell.js 中的
function boot() {
router.mapNav('home');
router.mapNav('details');
router.mapNav('Foldername/page2');
log('Hot Towel SPA Loaded!', null, true);
return router.activate('home');
}
请告诉我正确的方法!
答案 0 :(得分:0)
一种常见的方法是在某处获得路由列表并加载该列表。定义如下所示的列表时,需要使用router.map()映射路由,因为mapNav会创建不带参数的默认路由。包含路径的对象示例 -
var routes = [{
url: 'home',
moduleId: 'viewmodels/home',
name: 'Home',
visible: true,
settings: {}
}, {
url: 'events',
moduleId: 'viewmodels/events/events',
name: 'Events',
visible: true,
settings: {}
}, {
url: 'eventdetails/:id',
moduleId: 'viewmodels/events/eventdetails',
name: 'Event Details',
visible: false,
settings: { event: true, show: false }
}];
如何映射这些路线 -
router.map(routes);
最后如何访问这些路线 -
router.activate('home');
或
var url = '#/fighterdetails/' + selectedFighter.id();
router.navigateTo(url);
答案 1 :(得分:0)
(DurandalJS 1.2.0)我不完全确定这是否是最好的方式,因为我对Durandal很新,但至少设法让它适用于此:
在 main.js :
router.mapRoute('details/:id', 'viewmodels/details', 'Details', false);
在 list.js :
中loadDetails: function (id) {
router.navigateTo('#/details/' + id);
},