【问题标题】:Durandal child router updating bindings only onceDurandal 子路由器仅更新一次绑定
【发布时间】:2016-02-05 23:28:44
【问题描述】:

我创建的路由器成功构建了导航模型,但是缺少更新一些绑定,每次在该childRouterapp.pageTitleapp.pageDescription)中加载页面时都需要更新这些绑定。

有没有办法将这些更新映射到 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
    };
});

【问题讨论】:

    标签: durandal durandal-2.0 durandal-navigation


    【解决方案1】:

    最简单的解决方案是添加activate 函数并返回它。然后,每次请求来自 childRouter 导航模型的页面时,Durandal 都会调用它。

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

    【讨论】:

      猜你喜欢
      • 2014-12-10
      • 1970-01-01
      • 2018-05-15
      • 2015-05-24
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      • 1970-01-01
      • 2014-05-20
      相关资源
      最近更新 更多