Ng-model绑定触摸事件输入的值失败

ng-model fails to bind the values entered with a touch event

本文关键字:失败 输入 事件 绑定 触摸 Ng-model      更新时间:2023-09-26

我使用的是JQuery + Bootstrap键盘,它专门为我的Angular应用中的触摸输入配置(如果我使用鼠标点击键,键盘将关闭,而不输入任何内容)。它被写为在点击事件时关闭。

Mobile-first-Virtual-Keyboard-Plugin-With-jQuery-Bootstrap

我的问题是,当我输入一些东西到一个输入框,这是绑定到我的控制器使用ng-model像下面的代码,

<input autocomplete="false" class="textInputSeeThrough keyboard"
                    ng-model="patientNIC" type="text" id="nic"
                    name="patientNICTxtbox" autofocus
                    placeholder="--- ENTER NIC NUMBER ---">

没有被正确绑定。但是,如果我使用纯javascript遍历DOM并在我的控制器中获取元素值,而不是使用$scope来获取值,我可以正确地获得值。

var val1 = $scope.patientNIC; // this doesn't work
var val2 = document.getElementById("nic"); // this works
alert(val1);
alert(val2.value);

所以很明显键盘没有问题。angular js在处理触摸事件时有什么已知的问题吗?我找不到。有人能解释一下为什么会这样吗?先谢谢你。

简单的回答是:Angular不知道输入的变化。每个更改必须封装在$apply$timeout中。

看这个使用jQuery设置输入值后更新Angular模型

不用担心,使用jquery/Javascript设置输入元素的值。请将以下脚本粘贴到你的html块/js (jquery)

    !function (n, t) { "use strict"; var r = n.fn.val; n.fn.val = function (n) { if (!arguments.length) return r.call(this); var e = r.call(this, n); return t.element(this[0]).triggerHandler("input"), e } }(window.jQuery, window.angular);

即使我们不需要重新赋值给ng对象/单独触发输入。

干杯!