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