1

我有一个名为 bootstrapText 的自定义视图,如下所示:

import Ember from 'ember';

export default Ember.TextField.extend({
  classNames: ['form-control', 'input-md'],
  attributeBindings: ['required'],
  required: false,
  focusOut: function() {
    console.log('focusOut');
    if (Ember.isEmpty(this.get('value'))) {
      this.set('value', 0);
    }
  }
});

我以这种方式从模板中使用:

{{view 'bootstrapText' value=numbeOfItems type='number'}}

你看,类型是“数字”。我的观察:当类型设置为“数字”时,Ember TextField 的行为是......:如果我输入不可解析的字符串(例如:xyz),它根本不会将输入的值分配给绑定变量(numberOfItems)。因此,numberOfItems 保持未定义。

问题是:Ember.TextField 在这种情况下不会清除该字段。因此,该字段一直显示“xyz”。

我希望它自动清除,这就是我实现 focusOut 方法的原因......我将值设置为 0。但这不是我真正想要的;0 与未定义不同。我想使用“未定义”作为“用户没有输入任何有效的东西”。0 是有效输入。

我试过: this.set('value', undefined); ...但当然它对显示没有影响(没有检测到变化;未定义->未定义)。

我也试过: this.set('value', 0); 其次是 this.set('value', undefined); .... 没运气。

您知道解决方案/正确的技术吗?

谢谢,拉卡

4

1 回答 1

0

好的,

所以我使用 jQuery : this.$().val(undefined);

而不是 this.set('value', 0);

这样就解决了。

于 2015-06-04T21:09:28.053 回答