在Ember.js中将一个模板加载到另一个模板中

时间:2015-11-08 11:17:45

标签: javascript templates ember.js

在我的一条路线renderTemplate方法中,我尝试使用this.render渲染不同的模板:

App.IndexRoute = Ember.Route.extend({

    renderTemplate: function() {

        this.render( 'dashboard', {
            into: 'admin'
        });

    }

});

但浏览器中的应用程序为空,控制台显示以下内容:

  

断言失败:您试图渲染到' admin'但事实并非如此   结果

在出现此错误消息后,我认为" admin"模板可能根本不存在,但它就在那里。两个"仪表板"和#34; admin"模板已加载。最奇怪的事情是:我能够使用this.render( 'dashboard' )this.render( 'admin' )并且它们都可以正常工作。

我做错了什么?我甚至在" admin"中添加了{{outlet}}标记。模板。

1 个答案:

答案 0 :(得分:0)

如果要渲染到admin,则必须在模板中使用命名的outled(与您编写的路径文件renderTemplate相关联)。因此,在模板中使用:

{{outlet 'admin'}}

修改

  

我现在不确定该怎么做。只是为了澄清:" admin"是   包含{{outlet}}的hbs模板。进入这个插座标签,   我想加载' dashboard.hbs'。之后,我想输出   整件事。我需要哪个文件

我假设您想要从另一个无关联的路线渲染这两个模板。在这种情况下,您可以将{{partial 'dashboard'}}添加到admin.hbs,并在this.render('admin')中仅使用IndexRoute

编辑2

IndexController内指定partialName: 'dashboard'并在代码中动态更改,并将{{partial 'dashboard'}}替换为{{partial partialName}}。它应该动态工作,您可以将dashboard换成另一个模板。