我正在创建一个输入,如果你按住键#34; up"或" down",它递增或递减该输入中的数值。
对于关键事件,我使用ng-keydown指令更新绑定(ng-bind)到输入本身的$ scope.value。
问题是握住键越长越慢。
I've recreated a basic version in jsfiddle
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.number = 9;
$scope.updown = function($event) {
if ($event.keyCode == 40) $scope.number -= 1;
else if ($event.keyCode == 38) $scope.number += 1;
} }
它并没有像我自己的实现那样 慢,它还有一些其他的东西,但是我的时间线&#d; d(jsfiddle' s)chrome dev工具中的内存泄漏,以显示相同的模式。
它不仅仅是ng-keydown,而且其他事件也像这样行为不端(mousewheel)
发生了什么,我怎么能避免这种情况?
修改进行比较,this is how chrome natively handles the <input type='number'>
!
答案 0 :(得分:0)
帮助我的这个问题的解决方法是在输入字段中添加去抖动。它以间隔方式生成Angular过程数据,从而产生更流畅的用户体验。
<input type="number" ng-model="number" ng-model-options="{ debounce:500 }">
您可以在此处阅读更多内容:https://docs.angularjs.org/api/ng/directive/ngModelOptions