2016-02-05 51 views
0

我已经成功创建的路由器构建了一个导航模型,但缺少更新某些绑定,每次页面加载时都需要更新一些页面,在childRouterapp.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 
    }; 
});