2016-02-05 16 views
0

Роутер, который я создал, успешно создает навигационную модель, но отсутствует обновление некоторых привязок, которые необходимо обновлять каждый раз, когда страница загружается в пределах этого childRouter (app.pageTitle, app.pageDescription).Durandal дочерний маршрутизатор, обновляющий привязки только один раз

Есть ли способ сопоставить эти обновления с жизненным циклом Durandal, что-то вроде activate событий?

define([ 'durandal/app', 'plugins/router', 'knockout', 'app' ], function(app, router, ko, app) { 

    console.log("content start"); 

    var childRouter = router.createChildRouter().makeRelative({ 
     moduleId : 'app/content/pages', 
     fromParent : true 
    }).map([ { 
     route : [ '', 'grid' ], 
     moduleId : 'grid/index' 
    }, { 
     route : 'details/:id', 
     moduleId : 'details/index' 
    }, { 
     route : 'details/tabs/base', 
     moduleId : 'details/tabs/base' 
    } ]).buildNavigationModel(); 

    console.log("cms title start"); 
    app.pageTitle(app.i18n('app:modules.content.title')); 
    app.pageDescription(app.i18n('app:modules.content.subtitle')); 
    console.log("cms title stop"); 

    return { 
     router : childRouter 
    }; 
}); 

ответ

0

Самое простое решение, которое работает будет добавлять activate функцию и возвращает его. Затем Durandal вызывает его каждый раз, когда запрашивается страница с модели навигации childRouter.

define([ 'durandal/app', 'plugins/router', 'knockout', 'app' ], function(app, router, ko, app) { 

    console.log("content start"); 

    var childRouter = router.createChildRouter().makeRelative({ 
     moduleId : 'app/content/pages', 
     fromParent : true 
    }).map([ { 
     route : [ '', 'grid' ], 
     moduleId : 'grid/index' 
    }, { 
     route : 'details/:id', 
     moduleId : 'details/index' 
    }, { 
     route : 'details/tabs/base', 
     moduleId : 'details/tabs/base' 
    } ]).buildNavigationModel(); 

    function activate() { 
     console.log("cms title start"); 
     app.pageTitle(app.i18n('app:modules.content.title')); 
     app.pageDescription(app.i18n('app:modules.content.subtitle')); 
     console.log("cms title stop"); 
    }   

    return { 
     activate : activate, 
     router : childRouter 
    }; 
});