0

私のアプリには、タイプの汎用テキスト フィールドがありますEm.TextField

App.DetailTextField = Em.TextField.extend({   
    attributeBindings: ['required', 'readonly', 'name']
});

私のテンプレートでは、DetailTextField を使用してデータを表示し、属性を指定して、「編集」または「表示」のいずれかのクラスで表示します。

{{view App.DetailTextField viewName="tbSurname" placeholder="surname"
valueBinding="surname" required="required" classNameBindings="isEditing:editing:viewing" readonlyBinding='getReadOnlyState'}}

これは正常に機能しますが、これらのフィールドがいくつかあり、それらはすべて同じ部分を持っています: classNameBindings="isEditing:editing:viewing" readonlyBinding='getReadOnlyState'. テンプレート ビューの現在の objectController から取得されますisEditinggetReadOnlyState

DetailTextField ビューのすべてのインスタンスに明示的に入力する必要がないように、 classNameBindingsandreadonlyBindingをクラス定義に入れる方法はありますか? DetailTextFieldつまり、DetailTextField は現在のコンテキストを取得できます - 例:

App.DetailTextField = Em.TextField.extend({

    attributeBindings: ['required', 'readonly', 'name'],
    classNameBindings: "this.view.get('isEditing'):editing:viewing"

});

コントローラーから値を取得するクラス定義内に関数を作成することはできisEditingますが、activeController / this.controller を参照する方法がわからないという同じ問題が依然としてあります。

何かご意見は?

4

1 に答える 1