检查重复项无法正常工作的功能

时间:2017-02-13 21:20:21

标签: javascript html angularjs underscore.js

我有这个迷你应用程序,允许用户输入汽车的品牌和型号,然后将其添加到下表。我添加了一个函数,它将检查重复项,并在表中已存在时发出警报。如果没有匹配的现有记录,它将推送新的" 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;

  });

1 个答案:

答案 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;
  };
相关问题