Ember Inputを数字入力として拡張する新しいコンポーネントを書きたいと思っています。このクラスのユーザーがvalue
プロパティの値をnumber-input-componentにバインドする場合は、数値(無効な値の場合はNaN)のみを取得する必要があります。 Ember Inputでは、valueには属性バインディングがあります。私は、次のよう番号入力成分の「価値」という名前の計算されたプロパティを定義したember.jsの親プロパティを上書きする方法は? (具体的には数字入力の振る舞い)
:
value:Ember.computed({
get:function(key){
let htmlValue = this.get('htmlvalue');
return this.sanitize(htmlValue);
},
set:function (key, htmlvalue){
this.set('htmlvalue', htmlvalue);
if(this.get('onUpdate')) {
this.get('onUpdate')(this.sanitize(htmlvalue));
}
return this.sanitize(htmlvalue);
}
}),
期待通りに動作しますが、それは双方向バインディングで働いていません。 (実際にはDDAUのためokです。しかし、それは、双方向バインディングで動作するはずです。。)
注: 私は、ユーザーができるように、私は、このような「numericValue」(hereとして示されている)として別のプロパティを供給できることを知っていますそれらの値を "numericValue"にバインドします。しかし、私は値とnumericValueの両方でユーザーを混乱させたくありません。
UPDATE:
フィールドに入力しますが、任意のタイプミスは値がリセットされることはありません。たとえば、ユーザーが "123456789"と誤って "12345678p"を入力しようとすると、入力リセットが発生しません。値が無効の場合、エラーメッセージの表示も値の再設定もコンポーネントの責任ではありません。
あなたが見ることができますフィドルがあります:Ember-Twiddle
フィールドに入力中に点滅しています。私は私の質問を更新します。 – ykaragol