を動作するはずですあなたはエンバー経由(jQueryのを使用することができます。 $)を使用して、アプリケーションの起動時に手動でクラスを追加します。これは動作します:
// in app/routes/application.js
export default Ember.Route.extend({
// ...
activate() {
this._super(...arguments);
let root = Ember.getOwner(this).get('rootElement');
Ember.$(root).addClass('my-custom-class');
},
// ...
});
を使用すると、アプリケーションのルートについて尋ねているので、deactivate
フックで、この後をクリーンアップする必要はありません。
これは、現在のルートに応じてスタイルを微調整するのに特化したものです。ここでは現在のルート階層のルート要素にroute--xyz
クラスを追加しますインスタンス初期化子です:
import Ember from 'ember';
function toCssName(routeName) {
return `route--${routeName.dasherize().replace(/\./g, '-')}`;
}
export function initialize(appInstance) {
Ember.Route.reopen({
activate() {
this._super(...arguments);
Ember.$(appInstance.rootElement).addClass(toCssName(this.routeName));
},
deactivate() {
this._super(...arguments);
Ember.$(appInstance.rootElement).removeClass(toCssName(this.routeName));
}
});
}
export default {
name: 'css-route-name',
initialize
};
この初期化子では、ルート要素は、常に他のアクティブなルートに加えて、クラスroute--application
を持つことになります。私がやってしまったことである
うん、スタイリングの目的のために動作します。しかし、少し脆いです。最初のケースではエッジケースがあります。ember-viewはアプリケーションのビューではない、私の状況:/ 99%はおそらくこれと一緒に行くことができます。 – givanse
その他のトリックは、jqueryを使って親要素のクラスを変更し、それ自体を隠す/削除する特別な空のコンポーネントを作成することです。次に、このコンポーネントをapplication.hbsに含めることができます –