带有ng-click +输入的角度滤波器

时间:2015-02-04 19:33:15

标签: angularjs filter angularjs-ng-repeat angularjs-ng-click

如何获得一个带有ng-click out ul的过滤器作为ngtable的第二个过滤器?

<ul class="artGroups">
  <li class="" ng-repeat="artGroup in artGroups">
    <a href="#" ng-click="">{{artGroup.artGroupName}}</a>
  </li>
</ul>

这是一个plnkr:http://plnkr.co/edit/Amdx2BzEWQWVYmRAgTMw

1 个答案:

答案 0 :(得分:4)

您可以在主控制器上设置一个功能,以便在选择artGroup时更改值:

$scope.selectedGroup = '';
$scope.setGroup = function(group) {
    $scope.selectedGroup = group;
}

并连接ng-click指令:

<a href="#" ng-click="setGroup(artGroup.artGroupId)">{{artGroup.artGroupName}}</a>

然后,您可以使用范围内的tr变量在selectedGroup上设置另一个自定义过滤器:

<tr ng-repeat="article in articles | filter:searchText | isArtGroup:selectedGroup">

然后创建自定义过滤器,根据文章是否属于artGroupId来过滤文章:

app.filter('isArtGroup', function(){
  return function(values, groupId) {
    if(!groupId) {
      // initially don't filter
      return values;
    }
    // filter when we have a selected groupId
    return values.filter(function(value){
      return value.artGroupId === groupId;
    })
  }
})

以下所有这些在Plunker

中一起工作