首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >名为outlet的Ember.js渲染会破坏默认outlet的内容

名为outlet的Ember.js渲染会破坏默认outlet的内容
EN

Stack Overflow用户
提问于 2013-08-08 02:02:27
回答 2查看 372关注 0票数 0

完成TodoMVC教程后,我在Todo模型中添加了一个details字段,当我单击todo时,我希望在页面的其他位置显示该字段。当我在todos/ linkTo模板中单击此索引时,出现此问题

代码语言:javascript
复制
{{#linkTo 'todo' this}}{{title}} {{/linkTo}}

我希望将其呈现到todos路由中名为"details“的命名出口,同时保留默认出口(因为这是呈现todos/index的位置)。问题是todo模板呈现到了正确的outlet,但它也破坏了todo的默认outlet中以前的所有内容。我不确定为什么它要销毁旧出口的内容,因为我在路由中指定了正确的内容。

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

代码语言:javascript
复制
Todos.Router.map(function () {
this.resource('todos', { path: '/' }, function () {
    this.route('active');
    this.route('completed');
    this.resource('todo', {path: ':todo_id'});
    });

});

我的TodoRoute在这里

代码语言:javascript
复制
Todos.TodoRoute = Ember.Route.extend({
renderTemplate: function()  {
    this.render( {
        outlet: "details",
        into: "todos"
    });
  }
})
EN

回答 2

Stack Overflow用户

发布于 2013-09-27 21:45:51

据我所知,除了在父路由模板中没有任何{{outlet}},并使用{{render}}呈现它们之外,没有一种方法可以让兄弟路由不会互相破坏。然后,在它们的路由中,忽略renderTemplate挂钩,并使用modelsetupController{{render}}帮助程序用来指定要呈现的记录的层次结构中更高的控制器上设置属性。

票数 0
EN

Stack Overflow用户

发布于 2013-11-06 08:44:12

我认为你需要做this.render()来把todo模板放入你的应用程序模板的主出口。然后,进入详细信息出口的后续render()应该可以工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18110495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档