Ember 1.1x 按键事件不响应退格
Ember 1.1x key-press event not responding to backspace
我不得不使用旧版本的 Ember 并且需要在用户输入文本字段时执行操作。
我已通过以下方式绑定操作:
{{action="myAction" on="key-press"}}
或
{{key-press="myAction"}}
这两个都会触发,除非我按退格键/删除键删除值。我需要在这个用例中触发事件。
一些谷歌搜索显示人们建议使用 key-up
或 key-down
但是当我以与上面所示相同的方式绑定到这些事件时,我的操作永远不会被触发。
感觉好像遗漏了一些愚蠢的东西,任何输入将不胜感激。
恐怕无法升级 Ember 版本。
编辑:
我已设法使用以下语法触发 keyUp
事件,但这会禁用对我的输入字段的验证触发。
<input type="text" {{bind-attr class=":form-input errors.myField:error"}} {{bind-attr value=myField}} {{action "myAction" on="keyUp"}} />
当我在 Ember 检查器中仔细检查时,我刚刚将单个属性绑定到的原始输入并不像表单上的其他属性那样显示为 Ember.TextField
。我认为这是导致验证未触发的原因。
对于输入助手,如果您使用 on
关键字,则必须对事件名称进行 daserized。
{{input value="test" action="myAction" on="key-up"}}
对于普通输入元素,
<input type="text" {{action "myAction" on="keyUp"}} />
编辑:
ember 病房 key-up
上的 1.13 版正在运行。就像你说的,它不适用于旧版本 1.13。为此,我建议遵循这个,
创建扩展 Ember.TextField 并具有 keyUp 函数来处理 keyUp 事件的 my-input 组件。
import Ember from 'ember';
export default Ember.TextField.extend({
keyUp(event){
console.log('keyup event',event);
}
//You can write keyPress and other functions too if required.
});
你可以使用它 {{my-input value="test" action="myAction"}}
而不是 input
助手。
EDIT2
您不需要创建 Component 只是为了使 keyUp 事件起作用,这肯定是错误的,对此深表歉意。因为还有一种语法可以让它工作,
{{input value="kumkan" key-up="keyUpFromApp"}}
在控制器中定义动作,
controllers/applications.js
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
actions:{
keyUpFromApp(value,event){
console.log('keyup-event ',value, ' event ',event);
}
}
});
供参考,http://emberjs.com/api/classes/Ember.TextField.html#method_keyUp
播放:Ember-twiddle
我不得不使用旧版本的 Ember 并且需要在用户输入文本字段时执行操作。
我已通过以下方式绑定操作:
{{action="myAction" on="key-press"}}
或
{{key-press="myAction"}}
这两个都会触发,除非我按退格键/删除键删除值。我需要在这个用例中触发事件。
一些谷歌搜索显示人们建议使用 key-up
或 key-down
但是当我以与上面所示相同的方式绑定到这些事件时,我的操作永远不会被触发。
感觉好像遗漏了一些愚蠢的东西,任何输入将不胜感激。
恐怕无法升级 Ember 版本。
编辑:
我已设法使用以下语法触发 keyUp
事件,但这会禁用对我的输入字段的验证触发。
<input type="text" {{bind-attr class=":form-input errors.myField:error"}} {{bind-attr value=myField}} {{action "myAction" on="keyUp"}} />
当我在 Ember 检查器中仔细检查时,我刚刚将单个属性绑定到的原始输入并不像表单上的其他属性那样显示为 Ember.TextField
。我认为这是导致验证未触发的原因。
对于输入助手,如果您使用 on
关键字,则必须对事件名称进行 daserized。
{{input value="test" action="myAction" on="key-up"}}
对于普通输入元素,
<input type="text" {{action "myAction" on="keyUp"}} />
编辑:
ember 病房 key-up
上的 1.13 版正在运行。就像你说的,它不适用于旧版本 1.13。为此,我建议遵循这个,
创建扩展 Ember.TextField 并具有 keyUp 函数来处理 keyUp 事件的 my-input 组件。
import Ember from 'ember';
export default Ember.TextField.extend({
keyUp(event){
console.log('keyup event',event);
}
//You can write keyPress and other functions too if required.
});
你可以使用它 {{my-input value="test" action="myAction"}}
而不是 input
助手。
EDIT2
您不需要创建 Component 只是为了使 keyUp 事件起作用,这肯定是错误的,对此深表歉意。因为还有一种语法可以让它工作,
{{input value="kumkan" key-up="keyUpFromApp"}}
在控制器中定义动作,
controllers/applications.js
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
actions:{
keyUpFromApp(value,event){
console.log('keyup-event ',value, ' event ',event);
}
}
});
供参考,http://emberjs.com/api/classes/Ember.TextField.html#method_keyUp 播放:Ember-twiddle