在我的用例中,我想从父路由导航到子路由以及从子路由导航到父路由。第一种情况是工作,但第二种情况不是。为什么?怎么了? renderTemplate中的错误是什么?
App = Ember.Application.create();
App.Router.map(function() {
this.resource('parent',function(){
this.resource('child',function(){
});
});
});
App.ChildRoute = Ember.Route.extend({
renderTemplate: function(){
this.render('child', {
into: 'application',
controller: 'child'
});
}
});
<script type="text/x-handlebars">
<h1>Ember Sandbox</h1>
<nav>
{{#linkTo 'parent'}} Parent {{/linkTo}}
</nav>
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="index">
<h2>Welcome</h2>
</script>
<script type="text/x-handlebars" data-template-name="parent">
<h2>Parent</h2>
{{#linkTo 'child'}} Child {{/linkTo}}
</script>
<script type="text/x-handlebars" data-template-name="child">
<h2>Child</h2>
{{#linkTo 'parent'}} Parent {{/linkTo}}
</script>
答案 0 :(得分:3)
每当嵌套资源时,emberjs都会提供索引路由(App.ParentIndexRoute)。当您从子资源转换为父资源时,父模板已经呈现,因此它将被重定向到索引路径(App.ParentIndexRoute)。
在App.ParentIndexRoute中渲染父模板将解决您的问题
App.ParentIndexRoute = Ember.Route.extend({
renderTemplate: function(){
this.render('parent', {into: 'application'});
}
});