仅当用户使用过滤器时,如何显示ng-repeat元素

时间:2015-01-05 13:51:28

标签: javascript angularjs angularjs-ng-repeat

我知道只有在用户使用某些过滤器时才能显示我的元素。

例如:

$scope.elements = [{name : 'Pablo', age : 23}, {name : 'Franco', age : 98}];

<input type="text" ng-model="searchText" />
<div ng-repeat="element in elements | filter:searchText">
      <p>{{ element.name }}</p>
</div>

如果用户没有写入输入类型文本标签,我不想显示已过滤的列表。 或者输入类型复选框,收音机,选择标签...

我能做的是使用ng-show指令

<div ng-repeat="element in elements | filter:searchText" ng-show="searchText.length > 0">
      <p>{{ element.name }}</p>
</div>

但它似乎不合法。

有什么好主意吗?或者显然是一种原生的解决方案。

提前谢谢。

2 个答案:

答案 0 :(得分:2)

请检查

$scope.elements = [{name : 'Pablo', age : 23}, {name : 'Franco', age : 98}];

<input type="text" ng-model="searchText.name" />
<div ng-repeat="element in elements | filter:searchText">
      <p>{{ element.name }}</p>
</div>

希望这有效。

答案 1 :(得分:1)

您可以使用ng - 如果这样,代码在满足条件之前就不会运行。

<div ng-repeat="element in elements | filter:searchText" ng-if="searchText.length > 0">
      <p>{{ element.name }}</p>
</div>