检查输入到数组中的新数据是否与angularjs中已输入的任何数据匹配

时间:2016-07-19 10:05:49

标签: angularjs

我创建了一个代码,其中在文本框中输入的文本被推入一个数组中,然后在单击按钮时显示。代码如下:

var app = angular.module("myApp",[]);


app.controller("myCtrl", function($scope){

$scope.ss = [];

$scope.sa = [
        {plate1: 'some plate 1'},
        {plate1: 'some plate 2'},
        {plate1: 'some plate 3'},
        {plate1: 'some plate 5'}
    ]
alert($scope.ss.length);    
$scope.getPlate = function(){

$scope.ss.push({plate1:$scope.newplate});
    //var abb= $scope.ss.push.apply($scope.sa).toString();

//  var aas = $scope.ss;

}

});

HTML:

<div ng-controller="myCtrl">

    <table>
        <tr ng-repeat="xx in ss track by $index">
            <td>{{xx.plate1}}       </td>
            <td>            </td>
        </tr>
    </table>

    <input type="text" ng-model="newplate"/>
    <input type="button" ng-click="getPlate()"/>


</div>

现在我需要检查如果我输入的文本已经存在,那么就不应该按下它。请帮助。

2 个答案:

答案 0 :(得分:1)

使用Array.prototype.some()方法:

$scope.getPlate = function() {
  var exists = $scope.ss.some(function (value) {
    return value.plate1 == $scope.newplate;
  });
  if (exists) {
    // it exists
  } else {
    $scope.ss.push({plate1:$scope.newplate});
  }
}

答案 1 :(得分:-1)

你可以试试这个

app.controller("myCtrl", function($scope){
$scope.ss = [];
var match=[];
$scope.getPlate = function(){
   if(match.indexOf($scope.newplate) > -1){
        match.push($scope.newplate);
        $scope.ss.push({plate1:$scope.newplate});
    }
}
});