これを行う1つの方法は、計算されたプロパティを持つクラス名バインディングを追加することです。
//First extend Ember.TextField in your view
validatingTextField = Ember.TextField.extend({
//Now if isInvalid is true CSS class "highlight" is applied to text field
/* other ways include
isValid::error-class error-class will be applied when isValid is false
isValid:normal-class:error-class, normal-class is applied when isValid is true else error-class is applied
*/
classNameBindings: ['isInvalid:highlight',':span1p5'],
//If you have static classes you define them as :my-class-name
isInvalid: function(){
if(this.get('value').trim() === ""){
return true;
}else{
return false;
}
}.property('value')
})
次に、ハンドルバーで定義されている上記を使用します
{{view view.validatingTextField valueBinding="view.fieldValue"}}
重要
上記のコードはニーズを満たす可能性がありますが、テキストフィールドが多い場合はアプリケーションの速度が低下する可能性があります。値が変更されるたびに計算されたプロパティが実行されるため、クリックすると適用される可能性のある保存ボタンアクションを使用することをお勧めします。次のようにテキストフィールドへのCSSクラス
validatingTextField = Ember.TextField.extend({
classNameBindings: ['isInvalid:highlight',':span1p5']
})
save: function(){
//your code for save
if(this.get('validatingTextField.value').trim()===""){
this.get('validatingTextField').set('isInvalid', true);
}
}