2016-02-05 50 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 
    }; 
});