使用durandal组合绑定引用外部视图

时间:2014-04-17 07:34:29

标签: asp.net-mvc knockout.js view durandal composition

我有我的项目结构:

App
        - Admin
            - views
            - viewmodels
            - main.js  
        - User
        - SuperUser
        - Common
            - views
            - viewmodels

我的网站中的每个角色都拥有自己的带有main.js和其他二十一点的durandal SPA。

现在问题,

在我shell.html SPA的Admin我希望使用view文件夹中的Common

如果view中的Admin我只是compose binding

<div>
    <header data-bind="compose: { view: 'nav' }"></header>
        <section id="content" class="main container-fluid shell"
                 data-bind="router: { transition: 'entrance'}"></section>
        <footer data-bind="compose: { view: 'footer' }"></footer>
</div>

App / Admin / views中的views可用。 如何从App / Coomon / views / *中引用视图?

使用js组件很简单,我只是将其声明为模块,然后将其传递给define。我只是坚持观点。

我试过像:

    <div>
            <header data-bind="compose: { view: '../Common/views/nav' }"></header>
            <header data-bind="compose: { view: '../../Common/views/nav' }"></header>
        </div>

有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:1)

你以相对路径走正确的道路。只需将.html添加到视图中即可生效。

例如在您的文件夹结构中:

在管理员视图中,例如adminShell.html,您可以使用以下内容撰写nav.html中的Common/Views

compose: { view: '../../Common/views/nav.html }

通过查看源代码,我找到了更好的方法。有一个没有文档(我还没有找到文档)的功能,用于撰写绑定。您可以指定视图所在的区域。因此,对于给定的示例,您应该来:

compose: { view: 'views/nav', area: 'Common' }