【问题标题】:How to bypass rendering the parent template in ember.js?如何绕过在 ember.js 中渲染父模板?
【发布时间】:2013-07-10 17:06:01
【问题描述】:

我的 ember 应用中有嵌套路由的层次结构。我希望其中一个子路由绕过渲染它的父模板并直接渲染到应用程序模板中。但是,我仍然想保留路由层次结构,因为我需要子路由中来自父路由的模型。我所做的是我在子路由上定义了renderTemplate 钩子以渲染到application:

renderTemplate: function() {
  this.render({ into: "application" });
}

这可行,但是当我单击指向父路由的链接时,什么都没有呈现。我整理了一个小 jsfiddle 来演示这一点:http://jsfiddle.net/H7gvz/1/ - 运行它,然后单击其中一个名称,然后单击“索引”。我希望 PeopleRoute 呈现 people 模板,但没有呈现任何内容。

这是一个错误还是我做错了?这样做的正确方法应该是什么?

【问题讨论】:

    标签: javascript ember.js


    【解决方案1】:

    每当您使用嵌套路由时,从子路由 ('people.show') 到父路由 ('people') 的转换都会被重定向到 'index' 路由。在 App.PeopleIndexRoute 中呈现您的“人”模板将解决您的问题。

    App.PeopleIndexRoute = Em.Route.extend({
    renderTemplate: function() {
        this.render('people',{ into: "application" });
    
    }  
    });
    

    你的工作fiddle

    【讨论】:

    • 这似乎适用于我放在一起的简单 jsfiddle,但不幸的是,它不适用于我正在处理的项目中的实际情况。在那里,我有更复杂的路线层次结构,深几级。不过最后还是想办法把原来的子路由从原来的父路由中拉出来,这样就不用再绕过父模板渲染了。不过,我仍然接受您的回答,因为它以我提出问题的方式解决了问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多