Angularjs指令 - 带延迟调用keydown侦听器

时间:2016-10-02 14:21:04

标签: angularjs angular-directive

我有一个指令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

1 个答案:

答案 0 :(得分:3)

这是因为在将新字符添加到输入值之前会触发keydown个事件。使用keyup

element.bind('keyup', function(event){
    element[0].value = element[0].value.toUpperCase();

})