ember.js - render()找不到`into:`选项指定的模板

时间:2018-02-16 01:33:31

标签: ember.js

我希望得到一些帮助,因为我现在已经尝试了几个小时的工作。看起来应该很容易做到。

我试图在我的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'}},因此'我不需要从我能说的内容中明确指出它。也就是说,我已经尝试明确地指定它,并且再次无济于事。

提前致谢!

1 个答案:

答案 0 :(得分:0)

只是预感:我对路线中renderTemplate()的理解是#34;渲染一些模板而不是路线名称所暗示的模板",所以如果你指定this.render('admin-dashboard', // ...那么{ {1}}应该呈现而不是 templates/admin-dashboard,因此templates/admin出口无处可寻。

要测试我的假设,您可以尝试渲染admin,或者不要覆盖into: 'application'路线中的renderTemplate并尝试在子渲染中admin 它的路线。