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
中的一个小错误,我认为这不是一个错误,但它是错误的实现,因为在上面的示例中,字符串值被添加到整数数组中。