Ember.js渲染命名插座会破坏默认插座的内容

时间:2013-08-07 18:02:27

标签: javascript ember.js ember-router

使用TodoMVC教程,我在todo模型中添加了一个详细信息字段,当我点击Todo时,我希望在页面的其他位置显示该字段。当我在todos / index模板中单击此链接时出现问题

{{#linkTo 'todo' this}}{{title}} {{/linkTo}}

我想将此渲染到todos路径中名为“details”的命名插座,同时保留默认插座(因为这是渲染todos / index的地方)。问题是todo模板呈现到正确的插座,但它也会破坏先前todos默认插座中的所有内容。我不确定为什么它会破坏旧插座的内容,因为我在路线中指定了正确的内容。

我当前的路由器如下所示:

Todos.Router.map(function () {
this.resource('todos', { path: '/' }, function () {
    this.route('active');
    this.route('completed');
    this.resource('todo', {path: ':todo_id'});
    });

});

我的TodoRoute在这里

Todos.TodoRoute = Ember.Route.extend({
renderTemplate: function()  {
    this.render( {
        outlet: "details",
        into: "todos"
    });
  }
})

2 个答案:

答案 0 :(得分:0)

据我所知,除了在父路线的模板中没有任何{{outlet}}之外,没有其他兄弟路线不会相互摧毁,并且使用{{render}}渲染所有内容。然后在他们的路由中忽略renderTemplate挂钩并使用modelsetupController在层次结构中更高的控制器上设置属性,{{render}}帮助程序使用它来指定哪个记录是被渲染。

答案 1 :(得分:0)

我认为您需要执行this.render()将待办事项模板放入应用程序模板的主要插座中。然后随后render()进入详细信息插座应该可以工作。