2013-08-05 3 views
0

я не в состоянии переходить от одного вида к другому мнению с pararameterdurandal.js навигации с параметрами

из: -

ViewModel : App/Foldername/page1.js 
View : App/Foldername/page1.html 

я хочу пойти с параметром ID:

ViewModel : App/Foldername/page2.js 
    View : App/Foldername/page2.html 

in страница1.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'); 
     } 

пожалуйста Guid мне правильный путь!

+0

Какую версию Дюрандала вы? – Tyrsius

ответ

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); 
0

(DurandalJS 1.2.0) м не совсем уверен, что это лучший способ, так как я совершенно новой для Дюрандала, но, по крайней мере, удалось заставить его работать с этим:

In main.js:

router.mapRoute('details/:id', 'viewmodels/details', 'Details', false); 

В list.js:

loadDetails: function (id) { 
    router.navigateTo('#/details/' + id); 
},