Durandal:为弹出窗口实现多个/备用shell

时间:2014-12-26 16:42:21

标签: durandal

我的Durandal应用程序将打开"打开"特定表单上的功能,它将打开一个单独的窗口并显示没有应用程序的常规导航元素的表单。我无法弄清楚如何在我的应用程序中实现它。

此时我对Durandal还是比较新的。我的理解是,我在一个单独的窗口中打开我的SPA的另一个实例,但使用不同的shell。我想复制尽可能少的功能。

这是我的main.js,对专有代码进行了清理,并标记为我目前设想的解决方案:

requirejs.config({
    paths: { 'durandal':'../lib/durandal/js', /* et al */ },
    shim: { 'bootstrap': { deps: ['jquery'], exports: 'jQuery' } },
});

define(
    ['durandal/system', 'durandal/app', 'durandal/viewLocator', 'viewmodels/config'],
    function (system, app, viewLocator, config)
{
    //>>excludeStart("build", true);
    system.debug(true);
    //>>excludeEnd("build");

    app.title = 'My Application';

    app.configurePlugins({ router: true, dialog: true });

    //!! Do something here to determine which shell to use.
    var shellRoute = 'viewmodels/shell' //!! Unless popout window, then 'viewmodels/shell-nonav'

    app.start().then(function() {

        viewLocator.useConvention();

        $.when(config.init()) // config.init returns $.ajax().
        .then(function () { app.setRoot(shellRoute); })

    });
});

1 个答案:

答案 0 :(得分:0)

使用window.location.hash获取所选路由的哈希值,然后根据哈希值设置shellRoute