我希望得到一些帮助,因为我现在已经尝试了几个小时的工作。看起来应该很容易做到。
我试图在我的Ember应用中创建一个单独的布局。例如,公共application.hbs
布局和私人admin.hbs
布局。
在我的路线/ admin.js上,我试图使用renderTemplate()
功能无效。
路线/管理-dashboard.js
import Route from '@ember/routing/route';
export default Route.extend({
renderTemplate(){
this.render('admin-dashboard', {
into: 'admin'
});
}
});
模板/ admin.hbs: ``` {{出口}} ````
执行此操作时,我在控制台中收到以下错误:Error: Assertion Failed: You attempted to render into 'admin' but it was not found
。
文档似乎很简单地解释了这一点,但它似乎与实际行为不符。为方便起见,这里是文档中的示例。关键部分是第一个参数, into
和 outlet
选项。
import Route from '@ember/routing/route';
export default Route.extend({
renderTemplate(controller, model){
this.render('posts', { // the template to render, referenced by name
into: 'application', // the template to render into, referenced by name
outlet: 'anOutletName', // the outlet inside `options.into` to render into.
controller: 'someControllerName', // the controller to use for this template, referenced by name
model: model // the model to set on `options.controller`.
})
}
});
https://emberjs.com/api/ember/2.17/classes/Route/methods/render?anchor=render
根据文档,如果未通过 outlet
,则默认使用{{outlet}}
或{{outlet 'main'}}
,因此'我不需要从我能说的内容中明确指出它。也就是说,我已经尝试明确地指定它,并且再次无济于事。
提前致谢!
答案 0 :(得分:0)
只是预感:我对路线中renderTemplate()
的理解是#34;渲染一些模板而不是路线名称所暗示的模板",所以如果你指定this.render('admin-dashboard', // ...
那么{ {1}}应该呈现而不是 templates/admin-dashboard
,因此templates/admin
出口无处可寻。
要测试我的假设,您可以尝试渲染admin
,或者不要覆盖into: 'application'
路线中的renderTemplate
并尝试在子渲染中admin
它的路线。