ember.js:扩展Ember.TextField并仅在输入键上更新value属性

时间:2015-04-03 18:38:03

标签: javascript ember.js

我希望创建一个文本字段,就像使用输入助手一样,但它的行为略有不同:在按下回车键之前,它不会更新它所绑定的属性。我扩展了组件并试图覆盖可能更新属性的函数:

InputTextSoftComponent = Ember.TextField.extend(
  keyPress:->
    console.log("keypress")
  propertyDidChange:->
    console.log('propChange')
  didInsertElement:->
    console.log('insert')
  modelChangedValue:->
    console.log('changeval')

)

该组件现在就像普通的文本字段一样,我很惊喜

{{input-text-soft id="height-input" class="position-inputs" type="text" value=controller.activeRegion.width}}

但是,我无法通过更新值目标来停止文本字段中的更改。如何防止这种情况并实现一种软绑定,以便输入只更新enter键的属性?我正在寻找特定于Ember CLI和组件使用的解决方案。

1 个答案:

答案 0 :(得分:1)

创建不同的绑定属性。您房产的别名。将您的文本域绑定到该属性。仅在按下enter时才从别名更新不动产。伪:

{{input-text-soft id="height-input" realValueBinding="controller.activeRegion.width" value=newWidth...}}

keyPress() {
  if (keyCode == xx)
     this.set('realValue', this.get('newWidth'))
}