0

我无法使用参数从一个视图导航到另一个视图

从 :-

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

请指导我正确的方法!

4

2 回答 2

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);
},
于 2013-08-07T07:55:14.730 回答
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);
于 2013-08-05T12:33:50.660 回答