最新のリリースで提供されるレイアウト機能を使用したいと思うようです(私は最近、PRが最近マージされた時期はわかりません)。
PRはここにある:https://github.com/aurelia/templating-router/pull/25
は、基本的にそれはあなたにルーティングする場合、元のモジュールの代わりに座って眺め/の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マスターページに似ており、あなたが(子ルートを必要とせずに)特定のページのための代替レイアウトを指定することができます。
それはあなたがそれを行うには期待している何
(それはまた、あなたがあまりにもビューポートのレイアウトを指定することができるという点で、ビューポートで動作します)ビューポートから非常に異なるのか? 2つのビューポートがあります... 2つのビューポートで同じコンポーネントをどのように共有しますか?同じバッキングVMと同じビューが必要ですか? – Charleh
2つのビューを持つ1つのバッキングコンポーネントが必要です。親ビューで異なる部分にアタッチすることができます。 –
基本的に2ビットのコンテンツがレンダリングされるプレースホルダが必要ですが、1つのビューモデルでそれを元に戻す必要がありますか? MVCの部分ページやASP.NETマスターページのようなもの? – Charleh