javascript - 如何在 Angular 中仅获取/检查表的可见行

标签 javascript angularjs dom angularjs-scope angularjs-ng-repeat

如何在几个过滤器之后只获取表中的可见行?
我有带分页的表格,可以对其进行一些过滤。
我只想使用 SelectAll Checkbox 选择可见的。
起初我只有一个过滤器,只是迭代了这个过滤器的结果。

  selectAllChange() {
        if (this.$scope.AllChange) {
          this.$scope.AllChange = true;
          this.$scope.count = this.langV.length;
        } else {
          this.$scope.AllChange = false;
          this.$scope.count = 0;
        }// get whether to set true/false
        var filtered = this.filter(this.langV, {
          Name: this.$scope.searchK,
        });// filter after Search
        angular.forEach(filtered, (item) => {
          item.Selected = this.$scope.AllChange;
          this.change(item);
        });//set all true/false
      }

现在,随着越来越多的过滤器的出现,我们将不胜感激 SelectAll“Visbile/Shown/Filtered”行等更合适的解决方案。

selectAllChange() {
       ...
//somehow all shown Rows over all pages after filtered
        angular.forEach(visibleRows, (item) => {
          item.Selected = this.$scope.AllChange;
          this.change(item);
        });
      }

我尝试将表别名作为 results

    <tr dir-paginate="v in $ctrl.langV | filter:{Name:searchK,value1:searchV}| filterByProd:selectedProduct|orderBy: sortType:sortReverse|itemsPerPage:10 as results">  
...  
    {{results}}

但它只给我实际页面的行,而不是整个表格。
是否有一种简单的方法可以在过滤后获取所有行? 或者我有没有以某种方式组合我的 CustomeFilter -> | filterByProd:selectedProduct 与实现的 AngularFilters |filter:{Name:searchK,value1:searchV} 并在其中返回一个数组,其中包含要选择的过滤对象?

最佳答案

所以不用命名整个

<div ng-repeat="some in something | someFilter as results"></div>

您必须将其更改为:

<div ng-repeat="some in visibleItems = (something | someFilter)"></div>

然后您可以在您的 Controller 中使用 $scope.visibleItems,它将仅包含已通过您的 someFilter 的项目的特定子集。
这现在只能由 SelectAll 更改。 以我为例

  selectAllChange() {
        if (this.$scope.AllChange) {// my SelectAll Checkbox
          this.$scope.AllChange = true;
        } else {
          this.$scope.AllChange = false;
        }// get whether to check/uncheck
        angular.forEach(this.$scope.visibleItems, (item) => {
          item.Selected = this.$scope.AllChange;
          this.change(item); // set every visible to checked/unchecked
        });
      }

在那里找到了解决方案: AngularJS - "Select All" items that are currently visible

关于javascript - 如何在 Angular 中仅获取/检查表的可见行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40088284/

相关文章:

javascript - HTML 页面上的内容按什么顺序加载和执行?

javascript - python - 在网络服务中以字节形式发送 pdf

javascript - 为什么在表单内填充 ng-model 后应该跟上 $scope.$apply?

javascript - 如何在 JavaScript 对象中删除空元素及其键?

javascript - 是否可以在常规对象(不是 DOM 对象)上分派(dispatch)事件?

javascript - 元素的 name 属性对 querySelectorAll 不可见,并且不会出现在其 HTML 中

javascript - NodeJS-App - DOM 操作?

javascript - 没有很多 for 循环的改进我的代码的更好方法

javascript - jQuery 没有运行

javascript - 在 ReactJS 中按住 ctrl + 单击时在新选项卡中打开链接?