Javascript 过滤数组为空时角度隐藏

Javascript 过滤数组为空时角度隐藏,javascript,angularjs,Javascript,Angularjs,我有多个使用自定义筛选器的ng repeats,我想隐藏列表。每个列表都有自己的someScopeValue值,用于确定是否应包含(或过滤)重复项 我的第一次尝试不起作用,原因很清楚(项目仅在ng repeat中过滤,ng show不知道这一点: <!-- this is clearly not smart logic --> <ul ng-show="items.length"> <li ng-repeat="item in items | customF

我有多个使用自定义筛选器的
ng repeat
s,我想隐藏列表。每个列表都有自己的
someScopeValue
值,用于确定是否应包含(或过滤)重复项

我的第一次尝试不起作用,原因很清楚(项目仅在
ng repeat
中过滤,
ng show
不知道这一点:

<!-- this is clearly not smart logic -->
<ul ng-show="items.length">
    <li ng-repeat="item in items | customFilter:someScopeValue">text</li>
</ul>
...
<ul ng-show="items.length">
    <li ng-repeat="item in items | customFilter:someScopeValue">text</li>
</ul>
或者,也许我可以用更聪明的方式使用
nginit

<!-- this filters the list on-the-fly for each <ul> using some scope function -->
<ul ng-init="filteredList = filter(items, someScopeValue)" ng-show="filteredList.length">
    <li ng-repeat="item in filteredList">text</li>
</ul>

    文本

是的,您可以使用
ng init
或引入一个。但是我建议在控制器内过滤您的数据,并将过滤后的数组公开给模板。特别是如果您必须隐藏parrent
元素。

是的,您可以使用
ng init
或引入一个。但是我建议您过滤您的数据在控制器内部,将过滤后的数组暴露给模板。特别是如果必须隐藏parrent
元素。

如果在对数据进行排序后不更改数据,则可以首先在控制器内部操纵数组。然后只需使用您的第一个建议ng show=“filteredList.length”.

如果在对数据进行排序后不更改数据,则可以首先在控制器内操作数组。然后使用您的第一个建议ng show=“filteredList.length”.

这是我回答您问题的路线。我在过滤器修改的范围内的列表上设置了一个手表,并基于另一个保持长度的变量显示。下面是一个示例


这是我提出你的问题的路线。我在过滤器修改的范围内的列表上设置了一个手表,并基于另一个保持长度的变量显示。下面是一个示例


您可以在作用域上创建一个新变量,该变量将是过滤数组,如下所示:

<ul ng-show="filteredItems.length">
  <li ng-repeat="item in items | filter:someScopeValue as filteredItems">{{item.value}}</li>
  <li>Extra</li>
</ul>
  • {{item.value}
  • 额外的
执行类似操作时,将创建一个
$scope.filteredItems


.

您可以在您的作用域上创建一个新变量,该变量将是筛选后的数组,如下所示:

<ul ng-show="filteredItems.length">
  <li ng-repeat="item in items | filter:someScopeValue as filteredItems">{{item.value}}</li>
  <li>Extra</li>
</ul>
  • {{item.value}
  • 额外的
执行类似操作时,将创建一个
$scope.filteredItems

<ul ng-show="filteredItems.length">
  <li ng-repeat="item in items | filter:someScopeValue as filteredItems">{{item.value}}</li>
  <li>Extra</li>
</ul>