Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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 避免在Angular.js中的ng repeat集合中添加重复项_Javascript_Angularjs - Fatal编程技术网

Javascript 避免在Angular.js中的ng repeat集合中添加重复项

Javascript 避免在Angular.js中的ng repeat集合中添加重复项,javascript,angularjs,Javascript,Angularjs,我有这样的ng click事件: $scope.submitInfo = function myfunction() { var itemToAdd = { Id : generateUUID(), Name: $scope.Name, Email: $scope.Email, Phone: $scope.Phone }; $scope.Info.pus

我有这样的ng click事件:

$scope.submitInfo = function myfunction() {
        var itemToAdd = {
            Id : generateUUID(),
            Name: $scope.Name,
            Email: $scope.Email,
            Phone: $scope.Phone
        };
        $scope.Info.push(itemToAdd);
    }
我的问题是,我想检查在
$scope.Info
集合中是否已经存在相同的
ID
Name

我是angular.js上的purly foucs,我正在寻找这种场景的最佳解决方案

大概是这样的:

$scope.submitInfo = function myfunction() {
    var itemToAdd = {
        Id : generateUUID(),
        Name: $scope.Name,
        Email: $scope.Email,
        Phone: $scope.Phone
    };
    var foundElement = $filter('filter')($scope.Info, {Name: $scope.Name}, true);

    if (foundElement.length === 0) {
        $scope.Info.push(itemToAdd);
    }
};

当然,你需要在你的控制器/工厂/任何东西中注入$filter,试试这个-在你的提交函数中写下面的代码,例如

$scope.submitInfo = function myfunction() {
    var itemToAdd = {
        Id : generateUUID(),
        Name: $scope.Name,
        Email: $scope.Email,
        Phone: $scope.Phone
    };
    if(($scope.Info.indexOf(itemToAdd.id) != -1) || ($scope.Info.indexOf(itemToAdd.Name) != -1) {
         $scope.Info.push(itemToAdd);
    }
}

您可以使用本机Javascript过滤器(IE8不支持)检查是否存在具有该名称的元素:

var duplicates = $scope.Info.filter(function(item) {
    return item.Name = $scope.Name;
});
var nameExists = duplicates.length > 0;
以及您的完整方法:

$scope.submitInfo = function myfunction() {
    var duplicates = $scope.Info.filter(function(item) {
        return item.Id = $scope.Name;
    });
    var nameExists = duplicates.length > 0;

    if (!nameExists) {
        var itemToAdd = {
            Id : generateUUID(),
            Name: $scope.Name,
            Email: $scope.Email,
            Phone: $scope.Phone
        };
        $scope.Info.push(itemToAdd);
    }
}

您必须遍历集合,并将每一行与要添加的数据进行比较。的可能重复项