Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 使用orderBy filter和updateOn Blur时角度数输入自动递增_Angularjs - Fatal编程技术网

Angularjs 使用orderBy filter和updateOn Blur时角度数输入自动递增

Angularjs 使用orderBy filter和updateOn Blur时角度数输入自动递增,angularjs,Angularjs,我正在处理一个使用角度的视图,我注意到如果执行某个动作序列,在ng repeat中输入的数字将自动递增 当以下情况为真时,会发生这种情况: 使用角度1.3及以上(未在角度2上测试) ng repeat使用orderBy 数字输入使用ng model options=“{updateOn:'blur'}” 更新:这些微调器控件是webkit的一部分,仅出现在webkit浏览器(如Chrome)中。IE和Edge不是webkit浏览器,不会显示微调器控件。 如果我使用angular 1.2,或者

我正在处理一个使用角度的视图,我注意到如果执行某个动作序列,在
ng repeat
中输入的数字将自动递增

当以下情况为真时,会发生这种情况:

  • 使用角度1.3及以上(未在角度2上测试)
  • ng repeat
    使用
    orderBy
  • 数字输入使用
    ng model options=“{updateOn:'blur'}”
更新:这些微调器控件是webkit的一部分,仅出现在webkit浏览器(如Chrome)中。IE和Edge不是webkit浏览器,不会显示微调器控件。

如果我使用angular 1.2,或者我删除了
orderBy
updateOn:“blur”
则问题不会出现

我知道我可以通过删除这两个功能中的任何一个来修复它,但我并不完全理解为什么会发生这种情况

有人能解释为什么数字输入自动递增吗?

有关重现问题的步骤,请参见下面的示例

var myApp=angular.module('myApp',[]);
myApp.controller('myController',函数myController($scope){
$scope.items=[{
'Name':'Item1',
“Seq”:0
}, {
'Name':'Item2',
“Seq”:0
}];
});

复制步骤:
  • 将鼠标悬停在项目1的序列输入上,然后按一次向上箭头
  • 将鼠标悬停在项目2的序列输入上,然后按一次向上箭头
  • 序列号现在将持续递增
  • 序号# 序号 项目# {{item.Seq} {{item.Name}
    我不确定您将如何解决这个问题,但这肯定是HTML数字微调器操作的一个怪癖。增加第一个微调器时,
    orderBy
    不会立即触发,因为输入框没有失去焦点。当你
    鼠标向下
    第二个微调器时,它会立即触发焦点更改,从而触发
    orderBy
    ,这会导致输入框在处理
    鼠标向下
    之前移动到相反的位置,导致微调器的动作就像你按住鼠标一样。对我来说,序列号不会增加,正如预期的那样,当我将焦点移出第一个单元格时,表格会重新排序。因此,如果您单击第二个单元格的“向上”箭头,您将获得数字2@jimmious,您使用的浏览器是什么?我刚刚在edge和IE中进行了测试,没有看到向上/向下按钮,因此无法在这些应用程序中重现该问题。我会更新这个问题,以表明这个问题目前在我的chrome中。我相信我现在明白了,它可能正在按设计工作。由于上/下箭头可以保持递增,因此它们使用mousedown/mouseup事件而不是单击。由于“模糊”,模型在焦点丢失之前不会更新,此时会进行排序。因此,当您单击第二个输入上的向上箭头时,它会注册mousedown事件,然后第一个输入模型更新,ng repeat应用orderBy,现在控件不再位于鼠标下,因此它不会注册mouseup事件。我认为问题的核心是,
    orderBy
    重新绘制DOM,我不确定你将如何解决这个问题,但这绝对是HTML数字微调器操作的一个怪癖。增加第一个微调器时,
    orderBy
    不会立即触发,因为输入框没有失去焦点。当你
    鼠标向下
    第二个微调器时,它会立即触发焦点更改,从而触发
    orderBy
    ,这会导致输入框在处理
    鼠标向下
    之前移动到相反的位置,导致微调器的动作就像你按住鼠标一样。对我来说,序列号不会增加,正如预期的那样,当我将焦点移出第一个单元格时,表格会重新排序。因此,如果您单击第二个单元格的“向上”箭头,您将获得数字2@jimmious,您使用的浏览器是什么?我刚刚在edge和IE中进行了测试,没有看到向上/向下按钮,因此无法在这些应用程序中重现该问题。我会更新这个问题,以表明这个问题目前在我的chrome中。我相信我现在明白了,它可能正在按设计工作。由于上/下箭头可以保持递增,因此它们使用mousedown/mouseup事件而不是单击。由于“模糊”,模型在焦点丢失之前不会更新,此时会进行排序。因此,当您单击第二个输入上的向上箭头时,它会注册一个mousedown事件,然后第一个输入模型更新,ng repeat应用orderBy,现在控件不再位于鼠标下,因此它不会注册mouseup事件。我认为问题的核心是,
    orderBy
    重新绘制DOM,这会混淆微调器。