aurelia 同一组件上的多个视口
aurelia multiple viewPorts on the same component
是否可以将 viewPorts 与同一组件一起使用,而无需将其实例化两次。例如
config.map([
{
route: 'route1',
name: 'route1',
viewPorts: {
default: {moduleId: './route1-module'},
heading: {moduleId: './route1-module', view: './route1-module-heading.html'}
},
nav: true,
title: 'Route1'
}]);
route1-module 被实例化并附加了两次。我需要避免它。
听起来你想使用将在以后的版本中出现的布局功能(我不确定什么时候但是最近已经合并了 PR)。
PR 在这里:https://github.com/aurelia/templating-router/pull/25
本质上,它让您有机会指定一个 view/viewmodel 对(一个 布局 ),它们将在路由到时代替原始模块。相反,原始内容将使用 slots
.
投影到布局中
示例:
路由配置
config.map([
{ layoutView: "layout.html", moduleId: 'page1' }
]);
page1.html
<template>
<div slot="slot1">some content</div>
<div slot="slot2">some other content</div>
</template>
layout.html
<template>
<div class="some-fancy-container">
<p>This is slot 2</p>
<!-- slot2 content will be projected here -->
<slot name="slot2">some fallback content</slot>
</div>
<div class="sidebar">
<p>This is slot 1</p>
<!-- slot1 content will be projected here -->
<slot name="slot1">some fallback content</slot>
</div>
</template>
结果 HTML 输出:
<template>
<div class="some-fancy-container">
<p>This is slot 2</p>
some other content
</div>
<div class="sidebar">
<p>This is slot 1</p>
some content
</div>
</template>
这类似于 MVC 部分或 ASP.NET 母版页,允许您为某些页面指定替代布局(不需要子路由)。
它与视口截然不同(它也适用于视口,因为您也可以为视口指定布局)
是否可以将 viewPorts 与同一组件一起使用,而无需将其实例化两次。例如
config.map([
{
route: 'route1',
name: 'route1',
viewPorts: {
default: {moduleId: './route1-module'},
heading: {moduleId: './route1-module', view: './route1-module-heading.html'}
},
nav: true,
title: 'Route1'
}]);
route1-module 被实例化并附加了两次。我需要避免它。
听起来你想使用将在以后的版本中出现的布局功能(我不确定什么时候但是最近已经合并了 PR)。
PR 在这里:https://github.com/aurelia/templating-router/pull/25
本质上,它让您有机会指定一个 view/viewmodel 对(一个 布局 ),它们将在路由到时代替原始模块。相反,原始内容将使用 slots
.
示例:
路由配置
config.map([
{ layoutView: "layout.html", moduleId: 'page1' }
]);
page1.html
<template>
<div slot="slot1">some content</div>
<div slot="slot2">some other content</div>
</template>
layout.html
<template>
<div class="some-fancy-container">
<p>This is slot 2</p>
<!-- slot2 content will be projected here -->
<slot name="slot2">some fallback content</slot>
</div>
<div class="sidebar">
<p>This is slot 1</p>
<!-- slot1 content will be projected here -->
<slot name="slot1">some fallback content</slot>
</div>
</template>
结果 HTML 输出:
<template>
<div class="some-fancy-container">
<p>This is slot 2</p>
some other content
</div>
<div class="sidebar">
<p>This is slot 1</p>
some content
</div>
</template>
这类似于 MVC 部分或 ASP.NET 母版页,允许您为某些页面指定替代布局(不需要子路由)。
它与视口截然不同(它也适用于视口,因为您也可以为视口指定布局)