我有我的项目结构:
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>
有什么想法吗?感谢。
答案 0 :(得分:1)
你以相对路径走正确的道路。只需将.html
添加到视图中即可生效。
例如在您的文件夹结构中:
在管理员视图中,例如adminShell.html
,您可以使用以下内容撰写nav.html
中的Common/Views
:
compose: { view: '../../Common/views/nav.html }
通过查看源代码,我找到了更好的方法。有一个没有文档(我还没有找到文档)的功能,用于撰写绑定。您可以指定视图所在的区域。因此,对于给定的示例,您应该来:
compose: { view: 'views/nav', area: 'Common' }