使用控制器中的角度过滤器过滤非匹配对象

时间:2016-11-21 08:23:13

标签: javascript angularjs

我使用angular $ filter从两个字符串中获取非匹配对象。

我已编写下面的代码进行迭代。

 angular.forEach(this.members, function (value: any, index: any) {
                var person = this.$filter('filter')(this.allPersonnel, { Id:    value.Member.Id })[0];
                console.log(person);
                this.validPerson.push(person); // Filter 
            });

如您所见,我无法添加“不等于”条件。我尝试了"Id:'!value.Member.Id'"

但它正在考虑作为字符串。

请你们告诉我一种方法。我正在使用Typescript angular。

2 个答案:

答案 0 :(得分:0)

创建您自己的自定义过滤器,然后使用它。

以下是如何创建一个示例:Creating a custom Angular filter with TypeScript

答案 1 :(得分:0)

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="namesCtrl">
<p><input type="button" value="Find Match" ng-click="FindUniqueRecords()"/></p>
<p> Filtered Records:</p>
<ul>
  <li ng-repeat="x in FilteredRecords">
    {{ x }}
  </li>
</ul>
</div>

<script>
angular.module('myApp', []).controller('namesCtrl',['$scope','$filter', function($scope,ff) {
$scope.FilteredRecords=[];
$scope.FindUniqueRecords=function(){
angular.forEach($scope.CountryCode1,function(value,index){
var foundMatch=ff('filter')($scope.CountryCode2,value);
if(foundMatch.length==0){
$scope.FilteredRecords.push(value);
}
});
angular.forEach($scope.CountryCode2,function(value,index){
var foundMatch=ff('filter')($scope.CountryCode1,value);
if(foundMatch.length==0){
$scope.FilteredRecords.push(value);
}
});

};
$scope.CountryCode1= [
        'Aus',
        'NZ'
    ];
$scope.CountryCode2= [
        'Aus',
        'Ind',
        'Eng'
    ];

}]);
</script>

</body>
</html>

我尝试了这个逻辑来从两个数组中找到唯一列表。