简单的Ember组件事件处理

时间:2018-08-13 06:31:34

标签: javascript ember.js

我正在尝试完成一项琐碎的任务:

只要输入焦点不清晰,通过focus-out或当用户按下enter时,都有一个输入框会触发一些操作。

所以我在模板中有这个:

{{input
    id=inputId
    value=newValue
    placeholder=placeholder
    focus-out=(action 'accept')
}}

当用户在输入框之外单击时,focus-out显然会触发。

然后在组件中,我有一个用于Enter键的事件处理程序:

import Component from '@ember/component';

export default Component.extend({
  keyDown(e) {
    if (e.keyCode === 13) {
      this.send('accept', this.get('newValue'))
    }
  },
  actions: {
    accept(value){
      console.log('Accepted new value: ' + value)
    }
  }
}

问题是,每当我按下enter时,它都会总是触发accept动作两次。我已经尝试过一些锁定机制,但是它总是最终触发两次。我猜一次是enter,一次是focus-out。是否可以使用once函数或类似方法将accept置于运行循环中?

任何事情都将不胜感激。谢谢。

0 个答案:

没有答案