我的 Durandal 应用程序的DOM结构如下:
//shell.html
<div id="applicationContentWrapper" >
<!-- ko compose: {model: 'viewmodels/header', activate:true} --> <!-- /ko -->
<div data-bind="router:{}"></div>
</div>
这是我的路由器配置的片段
router.map([
{ route: '', moduleId: 'viewmodels/dashboard', name: 'dashboard'},
{ route: 'form', moduleId: 'viewmodels/form', name: 'form'},
{ route: 'login', moduleId: 'viewmodels/login', name: 'login'}
]);
如您所见,我的登录视图被插入到<div data-bind="router:{}"></div>
预期的行为中。但是,如果我在登录视图中,我需要隐藏标题视图,我通过订阅标题视图模型中的路由器配置来设法做到这一点:
router.activeInstruction.subscribe(function (val) {
val.config.name === "login" ? showHeader(false) : showHeader(true);
});
但这感觉有点乱,标题视图的DOM仍在页面中,我真正想做的是,如果我在登录视图中,我只想让登录视图的DOM在那里,就好像我我在单独的页面中,只有登录视图。但到目前为止,我还没有找到一种干净的方法来做到这一点。