jeudi 15 février 2018

ember.js - render() cannot find template specified by `into:` option

I would love some help on this as I've been trying to get this work for a few hours now. It seems like it should be something easy to do.

I'm trying to create a separate layout within my Ember app. For example sake, there's the public application.hbs layout, and a private admin.hbs layout.

On my route/admin.js, I have tried to use the renderTemplate() function to no avail.

route/admin-dashboard.js

import Route from '@ember/routing/route';

export default Route.extend({
  renderTemplate(){
    this.render('admin-dashboard', {
      into: 'admin'
    });
  }
});

templates/admin.hbs: ``` ````

When doing this, I get the following error in my console: Error: Assertion Failed: You attempted to render into 'admin' but it was not found.

The documentation seems to explain this simply, but it does not seem to match the actual behavior. For convenience, here's the example in the documentation. The key parts are the first parameter, and the into and outlet options.

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

According to the documentation as well, if outlet is not passed, it will default to either using or , so there's no need to specify it explicitly from what I can tell. That said, I have tried specifying it explicitly and, again, to no avail.

Thanks in advance!




Aucun commentaire:

Enregistrer un commentaire