Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.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
Javascript 如果输入数组值是整数类型,为什么angularjs(ng repeat)允许在第一时间添加重复记录 片段1: 如果运行下面的代码,则无法添加重复记录_Javascript_Html_Arrays_Angularjs_Angularjs Ng Repeat - Fatal编程技术网

Javascript 如果输入数组值是整数类型,为什么angularjs(ng repeat)允许在第一时间添加重复记录 片段1: 如果运行下面的代码,则无法添加重复记录

Javascript 如果输入数组值是整数类型,为什么angularjs(ng repeat)允许在第一时间添加重复记录 片段1: 如果运行下面的代码,则无法添加重复记录,javascript,html,arrays,angularjs,angularjs-ng-repeat,Javascript,Html,Arrays,Angularjs,Angularjs Ng Repeat,var-app=angular.module(“myShoppingList”,[]); app.controller(“myCtrl”,函数($scope){ $scope.products=[“1”、“2”、“3”]; $scope.addItem=函数(){ $scope.products.push($scope.addMe); } }); {{x} 添加 在输入字段中写入以添加项目 这是因为默认输入类型是文本,因此是字符串,所以数字2不等于字符串“2” 如果在输入中添加类型编号 &

var-app=angular.module(“myShoppingList”,[]);
app.controller(“myCtrl”,函数($scope){
$scope.products=[“1”、“2”、“3”];
$scope.addItem=函数(){
$scope.products.push($scope.addMe);
}
});

  • {{x}
添加 在输入字段中写入以添加项目


这是因为默认输入类型是文本,因此是字符串,所以数字2不等于字符串“2”

如果在输入中添加类型编号

<input type="number" ng-model="addMe"> 

  • {{x}
添加 在输入字段中写入以添加项目


Angular需要跟踪中继器中的阵列项。如果未指定track by field,则它通过创建数组项的散列来跟踪

根据以上内容,您的问题的答案如下

如果数组值是字符串,为什么angular不允许第一次添加重复值

它为重复的值创建相同的散列-因此,出现错误

如果数组值是整数,为什么angular允许第一次添加重复值

因为当您再次输入时,它被视为字符串,因此具有不同的散列。

如果数组值是整数,为什么angular不允许第二次重复值


因为第一个条目被视为字符串,因此第二个条目被认为是重复的。

我调试了代码,发现了以下几点

当您从输入框中添加值时,它将其视为字符串,而不是数字

在第一种情况下

它包含一个字符串列表。试着加3。它将输入视为“3”,即 已经存在,因此它给出错误

在秒的情况下

你有一个数字数组。首次插入项目时 假设3,它将被添加为字符串。所以3(整数)与 “3”(字符串)


是的。这声音很好听。但不管是什么
ng repeat
如果字符串值是数字,则应检查它。我认为这是
ng repeat
中的一个小错误,我认为这不是一个错误,但它是错误的实现,因为在上面的示例中,字符串值被添加到整数数组中。