2015-05-15 98 views
0

我有NG單擊事件是這樣的:避免在NG-重複採集添加複製的項目,在Angular.js

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

我的問題是,我要檢查是否相同IDName尚未存在在$scope.Info集合中。

我是在angular.js purly FOUCS,我正在尋找最佳的解決方案爲這種情況

+0

你必須通過收集迭代和比較每列添加數據。 – Claies

+1

[Array .push()if possible does not exist?](http://stackoverflow.com/questions/1988349/array-push-if-does-not-exist) – Alex

回答

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

當然,你需要在你的控制器/工廠/不管

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); 
    } 
} 
+0

@vir是否適合您? – User2

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