我想编写一个将 Ember Input 扩展为数字输入的新组件。当此类的用户将他们的值绑定到number-input-component 的value
属性时,他们应该只得到一个数字(或 NaN 表示无效值)。在 Ember 输入中,值具有属性绑定。
我在number-input-component上定义了一个名为“value”的计算属性,如下所示:
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 没问题,但是应该可以双向绑定。)
注意:我知道我可以提供另一个属性,例如“numericValue”(如图所示),以便用户可以将他们的值绑定到“numericValue”。但我不想将用户与value和numericValue 混淆。
更新:
键入该字段时,任何拼写错误都不应重置该值。例如,当用户尝试写入“123456789”并意外按下“12345678p”时,不应导致输入复位。当 value 无效时,既不显示错误消息也不重置 value 不是组件的责任。
你可以看到一个小提琴:Ember-Twiddle