Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算嵌套ng重复的总数并更新angularjs中的多个控制器/模型_Javascript_Angularjs_Angularjs Scope_Angularjs Ng Repeat - Fatal编程技术网

Javascript 计算嵌套ng重复的总数并更新angularjs中的多个控制器/模型

Javascript 计算嵌套ng重复的总数并更新angularjs中的多个控制器/模型,javascript,angularjs,angularjs-scope,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Scope,Angularjs Ng Repeat,在我当前的项目中,我有两个嵌套的ng repeat,其中外部ng repeat提供了一个参数,内部ng repeat需要过滤掉数据+控制器上的一些额外自定义过滤。我想知道在整个数据集概览中,内部嵌套元素的总过滤计数是多少 考虑以下精简结构: <div ng-repeat="division in divisions"> <!-- some division related stuff like logo, name, ... comes here (header of

在我当前的项目中,我有两个嵌套的ng repeat,其中外部ng repeat提供了一个参数,内部ng repeat需要过滤掉数据+控制器上的一些额外自定义过滤。我想知道在整个数据集概览中,内部嵌套元素的总过滤计数是多少

考虑以下精简结构:

<div ng-repeat="division in divisions">
    <!-- some division related stuff like logo, name, ... comes here (header of the division) -->
    <ol>
      <li ng-repeat="member in members | orderBy:['position'] | filter:{divisionabbr:division.abbr} | filter:myCustomFilter"><!-- some member stuff here, like name --></li>
    </ol>
    <!-- some division footer stuff -->
</div>

  • 我的问题是:如何获得已筛选成员的总数,从而显示在整个页面上

    作为一个额外的例子,我希望我的控制器/范围上有这个计数,以便我可以与其他控制器进行通信

    我尝试了以下解决方案:

    • (请参阅我的评论,此计数在数据重新加载/部分数据集刷新时未正确更新)
    • (由于范围问题,无法使用嵌套ng repeat)

    有什么建议吗?

    您可以创建一个筛选成员对象,如:

    $scope.filteredMembers = {};
    
    然后像这样填充它:

    <div ng-repeat="division in divisions">
        <!-- some division related stuff like logo, name, ... comes here (header of the division) -->
        <ol>
          <li ng-repeat="member in filteredMembers[division] = (members | orderBy:['position'] | filter:{divisionabbr:division.abbr} | filter:myCustomFilter)"><!-- some member stuff here, like name --></li>
        </ol>
        <!-- some division footer stuff -->
    </div>
    
    
    
  • 在这之后,只需迭代
    filteredMembers
    ,并对其长度求和。因为它在范围内,所以您的控制器中也可以使用它


    没有简单/自然的方法可以做到这一点。

    这是一个工作示例:

    但是在你的代码中没有那么多的过滤器

    我在那里使用了这种方法:
    ng repeat=“filteredMembers=(members | filter:{division abbr:division.abbr})”我不明白减号是什么?有一个计算成员总数的工作示例:如果您所做的只是根据另一篇文章中的代码构建一个fiddle,那么您应该将其作为注释发布。如果您试图回答这个问题,可能需要解释代码中发生了什么。现在,它看起来不像一个答案,更像是简单地说“我把你的代码放在小提琴里了。”@BoltClock我写的这个例子并不是基于另一个。我们的回答之间的时间差大约为两分钟。在出版时,我还没有看到这样的回应。这很公平——无论哪种方式,我都觉得你的答案可以大大改进。一个简单的jsFiddle链接并不是很好的答案。有时候一个jsFiddle链接比100行文本更有用。不客气!)@Oleje,如果你窃取了别人的想法(并否决了他们),至少你有足够的尊严来更改变量名…@Shomz如果你仔细观察,你会发现我的方法与你的完全不同(除了同一个变量名是一次意外)