【问题标题】:Referencing external view with durandal compose binding使用 durandal 组合绑定引用外部视图
【发布时间】:2014-06-01 08:59:34
【问题描述】:

我有我的项目结构:

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

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

现在的问题,

在我的shell.htmlAdmin SPA 中,我想使用来自Common 文件夹的view。

如果是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 组件很简单,我只是声明为模块,然后将其传递给定义。我只是坚持意见。

我试过了:

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

有什么想法吗?谢谢。

【问题讨论】:

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


    【解决方案1】:

    您在相对路径的正确道路上。只需将.html 添加到视图中即可。

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

    在管理视图中,例如adminShell.html,您可以使用以下方法在Common/Views 中组合nav.html:

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

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

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

    【讨论】:

    • 谢谢)添加*.html 对我来说效果很好)不幸的是area 没有,这将是更优雅的解决方案
    • @makambi 我想知道这是不是真的,使用areas 真的会更优雅。您有多个 SPA。 单个 SPA 中最好利用区域。但是,您真的觉得在这种情况下需要单独的 SPA 吗?只是好奇。
    • 我没听懂那部分。例如,当 main 位于 Admin 中时,区域将无法工作。
    • @EricTaylor,也许你是对的,单个 SPA 中的areas 会更清楚。选择这种结构来分离逻辑并为每个SPA entry point 提供安全性。服务器端控制器和视图决定渲染页面的位置。我缺乏 SPA 方面的知识,当时这听起来是个好方法。
    • @makambi 是的,我们一开始也沿着这条路走。最后,我们选择了 1 个 SPA 并且没有区域。但是,我们在后端使用 Web API 2.1,提供完全的客户端体验。如果我们选择 MVC,我们会选择 1 个带区域的 SPA。
    猜你喜欢
    • 1970-01-01
    • 2014-05-20
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 2013-05-30
    • 2013-05-04
    • 2014-11-12
    相关资源
    最近更新 更多