避免在Angular.js

时间:2015-05-15 10:32:05

标签: javascript angularjs

我点击这样的事件:

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

我的问题是,我想检查ID集合中是否已存在相同的Name$scope.Info

我对angular.js非常感兴趣,我正在寻找这种场景的最佳解决方案

3 个答案:

答案 0 :(得分:0)

您可以使用$filter

这样的事情:

$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

答案 1 :(得分:0)

试试这个 - 在你的提交函数里面写下代码,即

$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);
    }
}

答案 2 :(得分:0)

您可以使用本机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);
    }
}