0

クラスをアプリケーションのルート要素にバインドしようとしていますが、うまく動作しません。

classNameBindingをmy に設定ApplicationViewすればうまくいくと思っていましたが、ApplicationViewの要素は のようですundefined。をターゲット$(App.rootElement)にして手動でクラスを追加/削除できますが、できれば「残り火の方法」でやりたいと思います。

ここに jsfiddle があります: http://jsfiddle.net/mcYcU/1/

ありがとう!

4

1 に答える 1

0

これApp.rootElementは、アプリがレンダリングされるノード (デフォルトでは body タグ) ですが、それ以外はあまり機能しません (私が思うに)。Ember アプリを他の HTML から分離したい場合に便利です...

考慮できる/考慮すべきことはApp.ApplicationView、の直後のアプリの最も外側のノードになるため、をターゲットにすることApp.rootElementです。クラスを追加するだけclassNames: ['appRoot']で、CSSでターゲットにできます

App.ApplicationView = Ember.View.extend({

    classNames: ['appRoot'],

    isActive: false,    
    classNameBindings: ['isActive'],    

    toggleClass: function(){
        this.toggleProperty('isActive');
    },

    manuallyAddClass: function() {
        this.toggleClass();
        if(this.get('isActive')) {
            $(App.rootElement).addClass('is-active');
        } else {
            $(App.rootElement).removeClass('is-active');
        }
    }
});

あなたのCSSは次のようなものになる可能性があります#application-root .appRoot.is-active { ... }...

于 2013-08-03T02:21:34.157 に答える