【问题标题】:angular filter with ng-click + input带有 ng-click + 输入的角度过滤器
【发布时间】:2015-02-04 19:33:15
【问题描述】:

如何从 ul 中获取带有 ng-click 的过滤器作为 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

【问题讨论】:

  • 你想在ng-click()上过滤掉什么?

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


【解决方案1】:

您可以在主控制器上设置一个函数,以在选择 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 中协同工作

【讨论】:

  • setGroup函数中,你可以检查groupId是否设置为当前值,如果没有设置为空字符串
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多