我想继续使用嵌套路由,但是在访问嵌套路由时不显示顶级内容。我不确定这有可能吗?
最初,我的要求是显示食物清单,并为用户提供添加食物foods/add
的选项。使用列表模板顶部的outlet
标签可以使表单添加食品,使其在列表顶部可见,在添加导致显示列表后过渡回food
没有表格。
现在需求已更改,有必要显示不包含列表内容的表单,并在成功添加后显示不包含任何表单的列表。
我知道我可以放弃子路由方法并创建诸如food-add
之类的路由,但是还有其他方法可以保留子路由(以及我喜欢的相应文件结构),但是允许foods/add
的要呈现的模板而不包含列表内容?
答案 0 :(得分:2)
每个路由都有一个索引模板,该索引模板仅在不存在子路由时可见。
您可以执行以下操作:
{{#each foods as |food|}}
{{food}}
{{/each}}
<LinkTo @route="food.add">Add</LinkTo>
<form>
...
</form>
{{!-- submitting this form would add the new food to the list of foods
and then also transition back to `food` --}}
有关索引路由如何工作的更多信息
https://guides.emberjs.com/release/routing/defining-your-routes/#toc_nested-routes
https://guides.emberjs.com/release/routing/defining-your-routes/#toc_index-routes