Angularjs 按键不';无法在输入文本中正确刷新ng模型,但keyup会

Angularjs 按键不';无法在输入文本中正确刷新ng模型,但keyup会,angularjs,keydown,Angularjs,Keydown,我需要在指令中检索文本输入的值,使用ng模型将值发送到数据库。 如果我在指令中使用keydown事件,并在输入中写入示例1234,则指令中显示的结果为123,如果我写入abc,则结果为ab。 如果我使用keyup,这个问题就不存在(通过firefox和chrome测试)。 为什么会发生这种情况 我的代码: .directive('updateDbb', ["$http", function ($http) { return { restrict: 'A', require: 'ngMode

我需要在指令中检索文本输入的值,使用ng模型将值发送到数据库。 如果我在指令中使用keydown事件,并在输入中写入示例1234,则指令中显示的结果为123,如果我写入abc,则结果为ab。 如果我使用keyup,这个问题就不存在(通过firefox和chrome测试)。 为什么会发生这种情况

我的代码:

.directive('updateDbb', ["$http", function ($http) {
 return {
 restrict: 'A',
 require: 'ngModel',
  link: function (scope, element, attrs, ngModel) {
        // Listen for change events to enable binding
        var ngModelValue, inputName, testValid, dbbFieldName, idDbb;
        element.bind('keydown', function () {
            ngModelValue = ngModel.$viewValue;
            console.log(ngModelValue); // Show with delay, not the case with "keyup"!!!

keydown
在用户按下某个键时触发,并且在将字符插入输入之前触发这就是它无法更新的原因

按键
在输入中插入实际字符时触发。我认为这是您想要使用的事件(如果用户保持向下键,则每个插入的字符将触发一次事件)


keyup
在将字符插入输入后,当用户释放一个键时激发。(如果用户按下键,事件将只触发一次)

这正是您所期望的
keydown
keypress
事件的第一部分
keydown
是在字符键入完成后,然后绑定值。