javascript - Loading child routers from database durandal -


i trying create child routes in durandal 2 database starterkit without success.

although succeeded in rendering static contents shown below:

define(['plugins/router', 'knockout'], function (router, ko) { var childrouter = router.createchildrouter()     .makerelative({         moduleid: 'sectiongroups',         fromparent: true     }).map([         { route: ['', 'child1'], moduleid: 'pages/child1', title: 'child1', nav: true },         { route: 'child2: moduleid: 'pages/child2', title: 'child2',  nav: true },         { route: 'child3', moduleid: 'pages/child3', title: 'child3',  nav: true }     ]).buildnavigationmodel();  return {     router: childrouter }; }); 

however i've been unable dynamically output the menus database. doing somethig wrong? please see code below

define(['plugins/router', 'knockout','services/oasismanager', 'services/logger'], function (router, ko, om, logger) {  var pageroutes = getpageroutes();  var childrouter = router.createchildrouter()     .makerelative({         moduleid: 'sectiongroups',         fromparent: true     })     .map(pageroutes)     .buildnavigationmodel();  function getpageroutes() {     var pageroutes = [];     om.getoasis(134).done(function() {         ko.utils.arrayforeach(om.activeoasis.pageroutes, function(item) {             var nav = true;             if (item.route == '') {                 nav = false;             }             pageroutes.push({                 route: item.route,                 moduleid: item.moduleid,                 title: item.title,                 nav: nav             });         });     });     return pageroutes; }  return {     router: childrouter }; }); 

html looks pretty same. please help

<div class="container-fluid knockout-samples"> <div class="row-fluid">     <div class="span2 well">         <ul class="nav nav-list">             <li class="nav-header">basic examples</li>              <!--ko foreach: router.navigationmodel-->             <li data-bind="css: { active: isactive }">                 <a data-bind="attr: { href: hash }, text: title"></a>             </li>             <!--/ko-->         </ul>     </div>     <div class="span10">         <!--ko router: { transition:'entrance', cacheviews:true }--><!--/ko-->     </div> </div> 

i think happening in code getpageroutes returning blank array. should returning promise list of routes. need this.

function getpageroutes() {     return om.getoasis(134).done(function(routes) {         var pageroutes = [];         ko.utils.arrayforeach(routes, function(item) {             var nav = true;             if (item.route == '') {                 nav = false;             }             pageroutes.push({                 route: item.route,                 moduleid: item.moduleid,                 title: item.title,                 nav: nav             });         });         return pageroutes;     }); } 

i making assumtion om.getoasis(134) return promise of list of routes.

not sure if have in durandal app similar want achieve. use q promises library handle async calls webapi.

define(['plugins/http', 'services/logger'], function (http, logger) {     "use strict";     var getroutes = function () {         return http.get("routes/availableroutes").then(function (data) {             logger.log("routes loaded", data, 'services/routes', false);             return data;         });     };     var routes = {         getroutes: getroutes     };     return routes; }); 

the calling code becomes following.

return routes().then(function (availableroutes) {     return router.makerelative({         moduleid: 'sectiongroups',         fromparent: true     })      .map(availableroutes)      .buildnavigationmodel()     .activate(); }); 

Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -