如何在ember中更改不同页面的正文背景

How to Change body background for different pages in ember

本文关键字:背景 正文 ember      更新时间:2023-09-26

我正在开发ember应用程序,我想有注册页面和登录页面的白色背景和其余的页面应该有灰色背景。

此刻我正在改变控制器(application.js文件)正文标签的颜色

import Ember from 'ember';
export default Ember.Controller.extend({
  isVerified:false,
  bgColour: function(){
    if(['users.login','users.signup'].indexOf(this.get('currentPath')) != -1){
      return 'white';
    }
    else{
      return 'bg-grey';
    }
  }.property('currentPath'),
});

有什么建议如何使这个更好/更干净的方式?

Kit的答案很常见,我们对我们的应用程序也做了同样的事情。但是如果你真的只需要在背景更改时生成类名,你可以通过避免生成类名来简化它:

export default Ember.Route.extend({
  activate () {
    Ember.$('body').addClass('bg-white');
  },
  deactivate () {
    Ember.$('body').removeClass('bg-white');
  }
});

我们必须处理来自客户端的大量任意请求,其中最简单的方法就是简单地针对特定页面,因此我们将路由名称添加到body

Ember.Route.reopen({
  activate: function() {
    var cssClass = this.toCssClass();
    // you probably don't need the application class
    // to be added to the body
    if (cssClass != 'application') {
      Ember.$('body').addClass(cssClass);
    }
  },
  deactivate: function() {
    Ember.$('body').removeClass(this.toCssClass());
  },
  toCssClass: function() {
    return this.routeName.replace(/'./g, '-').dasherize();
  }
});

这是一个很大的脏,你可以创建一个ThemeMixin并设置在路由上。这是一个更简单的版本:https://github.com/ronco/ember-cli-meta-tags