gpt4 book ai didi

AngularJS $watch 在文本输入中的每个按键上都会被调用

转载 作者:行者123 更新时间:2023-12-04 19:44:46 24 4
gpt4 key购买 nike

我有一个网页,我正在根据从服务器收到的动态 json 数据构建表单。不久前,我用 KnockoutJS 开发了它。构建表单后,我还需要通过从服务器执行 ajax 请求来更新表单,每次更改表单中的值时。这是fiddle
您会看到,更改事件仅发生在模糊时(而不是按键时)。例如,如果文本字段的值为 15,并且用户按退格键然后再次输入 5,则表示按了 2 次按键但值未更改。到现在为止还挺好。

问题 1
现在我正在将代码转换为 AngularJS。我试图通过 $watch 范围来捕捉更改事件。但是,似乎每次发生按键时都会运行 watch,即使在几次按键后值没有改变。这是fiddle我是如何尝试的。但是,此问题仅适用于文本类型输入字段。

问题2
我正在以手动方式创建 radio 组,例如如果 json 数据发生更改,那么我们也必须更新 html。我怎样才能以一种动态的方式做到这一点。我能够用 KnockoutJS 做到这一点。

问题3
为什么 ng-hide 不起作用?

最佳答案

修复问题1是引入了一个blur事件的指令,下面是我的指令的代码:

angular.module('app', []).directive('ngModelOnblur', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, elm, attr, ngModelCtrl) {
if (attr.type === 'radio' || attr.type === 'checkbox') return;

elm.unbind('input').unbind('keydown').unbind('change');
elm.bind('blur', function () {
scope.$apply(function () {
ngModelCtrl.$setViewValue(elm.val());
});
});
}
};

});

你可以在这里看到工作 fiddle http://jsfiddle.net/akeelrehman/GNJtn/1/

我想不出问题 2 的解决方案,所以我已经停止使用 radio 输入。

关于AngularJS $watch 在文本输入中的每个按键上都会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16986135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com