我有这个迷你应用程序,允许用户输入汽车的品牌和型号,然后将其添加到下表。我添加了一个函数,它将检查重复项,并在表中已存在时发出警报。如果没有匹配的现有记录,它将推送新的" make"和"模型"到桌子。我将代码更改为使用_.isEqual而不是之前的代码,现在每次运行时它都会在Alert中被捕获。有谁知道发生了什么?
<div>Make: <input type="text" ng-model="make"></div>
<div>Model:<input type="text" ng-model="model"></div>
<button ng-click="add()">Add</button>
<tr>
<th>Make</th>
<th>Model</th>
</tr>
<tr ng-repeat="car in cars" ng-click="rowClick(car)">
<td>{{car.make}}</td>
<td>{{car.model}}</td>
</tr>
var carsApp = angular.module('carsApp', []);
carsApp.controller('carController', function ($scope){
$scope.cars = [];
$scope.add = function () {
var newCar = {
make: $scope.make,
model: $scope.model
};
function hasDuplicates(){
angular.forEach($scope.cars, function(car, key){
_.isEqual(car, newCar);
});
}
if (hasDuplicates) {
alert("Car already exists");
} else {
$scope.cars.push(newCar);
}
}
$scope.rowClick = function(car){
$scope.make= car.make;
$scope.model= car.model;
};
$scope.make = null;
$scope.model = null;
});
答案 0 :(得分:0)
使用更简单的选项结束并使用angular.equals代替。 isEqual实施得太过分了。谢谢你的帮助!
function hasDuplicates(newCar){
var returnVal = false;
angular.forEach($scope.cars, function(car, key){
if (angular.equals(car, newCar))
{
returnVal = true;
}
});
return returnVal;
};