Ember.js: 如何让子路由显示在父资源中
Ember.js: How to make children routes display in the parent resource
最近我一直在阅读 ember 文档并尽我所能。感谢上帝,我取得了很好的进步,但最近我在路由方面遇到了麻烦。具体来说,我可以让模板显示在应用程序模板中,但我无法让子路由显示在父资源模板中。相反,子模板实际上取代了它。这是我的代码:
index.html
<script type="text/x-handlebars" data-template-name="modals">
<h2>Modals Parent Route</h2>
<p>This is the modals route which is common to all modals</p>
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="modals/layout">
<h2>Layout Route</h2>
</script>
<script type="text/x-handlebars" data-template-name="modals/visuals">
<h2>Visuals Route</h2>
</script>
<script type="text/x-handlebars" data-template-name="modals/finish">
<h2>Finish Route</h2>
</script>
<script type="text/x-handlebars" data-template-name="modals/preview">
<h2>Preview Route</h2>
</script>
App.js
App.Router.map(function(){
this.resource('modals', { path:'/modals' }, function(){
this.route('layout');
this.route('visuals');
this.route('finish');
this.route('preview');
});
});
App.LayoutRoute = Em.Route.extend({
renderTemplate: function() {
this.render('modals.layout',{
into: 'modals',
});
}
这不是完整的代码,但我认为这是与该主题相关的所有内容。如果您需要完整的文件内容,请随时问我。
如果你想要嵌套模板,你需要嵌套路由。
this.resource('parent', function() {
this.route('child');
});
参见:http://guides.emberjs.com/v1.10.0/routing/defining-your-routes/#toc_nested-resources
您正在使用的 renderTemplate
方法完全覆盖了 modals
的模板,这就是为什么,摆脱它。 Ember 为您处理模板的呈现,您尝试实现的基本功能不需要它。
所以我使用了 ember-cli 并最终想出了一个方法来让它工作。我使用 ember-cli g 路由来生成我的路由。我 运行 它为我的每条路线一次,除了应用程序。之后一切正常。这是某人为我创建的 git 存储库,它将帮助任何遇到同样问题的人:https://github.com/mooror/mooror。谢谢大家
最近我一直在阅读 ember 文档并尽我所能。感谢上帝,我取得了很好的进步,但最近我在路由方面遇到了麻烦。具体来说,我可以让模板显示在应用程序模板中,但我无法让子路由显示在父资源模板中。相反,子模板实际上取代了它。这是我的代码:
index.html
<script type="text/x-handlebars" data-template-name="modals">
<h2>Modals Parent Route</h2>
<p>This is the modals route which is common to all modals</p>
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="modals/layout">
<h2>Layout Route</h2>
</script>
<script type="text/x-handlebars" data-template-name="modals/visuals">
<h2>Visuals Route</h2>
</script>
<script type="text/x-handlebars" data-template-name="modals/finish">
<h2>Finish Route</h2>
</script>
<script type="text/x-handlebars" data-template-name="modals/preview">
<h2>Preview Route</h2>
</script>
App.js
App.Router.map(function(){
this.resource('modals', { path:'/modals' }, function(){
this.route('layout');
this.route('visuals');
this.route('finish');
this.route('preview');
});
});
App.LayoutRoute = Em.Route.extend({
renderTemplate: function() {
this.render('modals.layout',{
into: 'modals',
});
}
这不是完整的代码,但我认为这是与该主题相关的所有内容。如果您需要完整的文件内容,请随时问我。
如果你想要嵌套模板,你需要嵌套路由。
this.resource('parent', function() {
this.route('child');
});
参见:http://guides.emberjs.com/v1.10.0/routing/defining-your-routes/#toc_nested-resources
您正在使用的 renderTemplate
方法完全覆盖了 modals
的模板,这就是为什么,摆脱它。 Ember 为您处理模板的呈现,您尝试实现的基本功能不需要它。
所以我使用了 ember-cli 并最终想出了一个方法来让它工作。我使用 ember-cli g 路由来生成我的路由。我 运行 它为我的每条路线一次,除了应用程序。之后一切正常。这是某人为我创建的 git 存储库,它将帮助任何遇到同样问题的人:https://github.com/mooror/mooror。谢谢大家