Angularjs 指令 - 延迟调用 keydown 侦听器
Angularjs directive - keydown listener is invoked with delay
我有一个指令 make-caps
应用于输入元素。当用户键入它时,它会将输入框中的所有字符转换为大写。
现在,该指令已将其事件侦听器附加到 keydown
事件。
link : function(scope, element, attrs){
element.bind('keydown', function(event){
//$timeout(function(){
element[0].value = element[0].value.toUpperCase();
//});
})
}
除了最后一个字符被遗漏外,大写适用于所有人。如果用户键入 elle
,它将呈现 ELLe
。我可以通过将代码包装在 $timeout
块中来修复它,但我很好奇为什么当我设置 element[0].value
时视图没有更新
Plunker 代码是 here。
这是因为 keydown
事件在将新字符添加到输入值之前触发。使用 keyup
element.bind('keyup', function(event){
element[0].value = element[0].value.toUpperCase();
})
我有一个指令 make-caps
应用于输入元素。当用户键入它时,它会将输入框中的所有字符转换为大写。
现在,该指令已将其事件侦听器附加到 keydown
事件。
link : function(scope, element, attrs){
element.bind('keydown', function(event){
//$timeout(function(){
element[0].value = element[0].value.toUpperCase();
//});
})
}
除了最后一个字符被遗漏外,大写适用于所有人。如果用户键入 elle
,它将呈现 ELLe
。我可以通过将代码包装在 $timeout
块中来修复它,但我很好奇为什么当我设置 element[0].value
Plunker 代码是 here。
这是因为 keydown
事件在将新字符添加到输入值之前触发。使用 keyup
element.bind('keyup', function(event){
element[0].value = element[0].value.toUpperCase();
})