使用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"
});
}
})
答案 0 :(得分:0)
据我所知,除了在父路线的模板中没有任何{{outlet}}
之外,没有其他兄弟路线不会相互摧毁,并且使用{{render}}
渲染所有内容。然后在他们的路由中忽略renderTemplate
挂钩并使用model
或setupController
在层次结构中更高的控制器上设置属性,{{render}}
帮助程序使用它来指定哪个记录是被渲染。
答案 1 :(得分:0)
我认为您需要执行this.render()
将待办事项模板放入应用程序模板的主要插座中。然后随后render()
进入详细信息插座应该可以工作。