从子导航到父无法工作

时间:2013-07-25 06:32:14

标签: ember.js

在我的用例中,我想从父路由导航到子路由以及从子路由导航到父路由。第一种情况是工作,但第二种情况不是。为什么?怎么了? 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>

1 个答案:

答案 0 :(得分:3)

每当嵌套资源时,emberjs都会提供索引路由(App.ParentIndexRoute)。当您从子资源转换为父资源时,父模板已经呈现,因此它将被重定向到索引路径(App.ParentIndexRoute)。

在App.ParentIndexRoute中渲染父模板将解决您的问题

App.ParentIndexRoute = Ember.Route.extend({
 renderTemplate: function(){
  this.render('parent', {into: 'application'});
 }
});

Your Working jsbin