< mockra >

EmberJS - Body Route CSS - 03 May 2015


There’s a variety of reasons you might want to add a route specific tag to the body element of your application, so it’s nice to be able to provide that functionality for your designer.

Here’s an example of setting a body tag through an initializer. The first thing you’ll want to do is create an initializer file, such as app/initializers/route-body-tags.js.

You can then insert the following code:

  import Ember from 'ember';

  var alreadyRun = false;

  export function initialize(/* container, application */) {
    if (alreadyRun) {
      return;
    } else {
      alreadyRun = true;
    }

    Ember.Route.reopen({
      activate: function() {
        var cssClass = this.toCssClass();
        if (cssClass != 'application') {
          Ember.$('body').addClass(cssClass);
        }
      },

      deactivate: function() {
        Ember.$('body').removeClass(this.toCssClass());
      },

      toCssClass: function() {
        return this.routeName.replace(/\./g, '-').dasherize();
      }
    });
  }

  export default {
    name: 'route-body-tags',
    initialize: initialize
  };