0

根据 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"
    });
  }
})
4

2 回答 2

0

我认为您需要this.render()将待办事项模板放入应用程序模板的主要出口。然后后续render()进入细节出口应该工作。

于 2013-11-06T00:44:12.277 回答
0

据我所知,没有办法让兄弟路由不会相互破坏,除非{{outlet}}在其父路由的模板中没有任何内容,并将它们全部渲染为{{render}}. 然后在他们的路由中,您忽略renderTemplate钩子并使用modelsetupController设置层次结构中较高的控制器上的属性,{{render}}帮助程序使用这些属性来指定要呈现的记录。

于 2013-09-27T13:45:50.637 回答