如何仅在用户使用过滤器时显示 ng-repeat 元素
How to display ng-repeat elements only if user uses filters
只有当用户使用某些过滤器时,我才会知道如何显示我的元素。
例如:
$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>
如果用户没有写入输入类型文本标签,我不想显示过滤后的列表。
或者与输入类型复选框、单选框、select 标签相同...
我能做的就是使用 ng-show 指令
<div ng-repeat="element in elements | filter:searchText" ng-show="searchText.length > 0">
<p>{{ element.name }}</p>
</div>
但这似乎不合法。
有更好的主意吗?或者显然,一个本地解决方案。
提前谢谢你。
您可以使用 ng-if 这样代码不会 运行 直到满足条件。
<div ng-repeat="element in elements | filter:searchText" ng-if="searchText.length > 0">
<p>{{ element.name }}</p>
</div>
请检查这个
$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>
希望这有效。
只有当用户使用某些过滤器时,我才会知道如何显示我的元素。
例如:
$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>
如果用户没有写入输入类型文本标签,我不想显示过滤后的列表。 或者与输入类型复选框、单选框、select 标签相同...
我能做的就是使用 ng-show 指令
<div ng-repeat="element in elements | filter:searchText" ng-show="searchText.length > 0">
<p>{{ element.name }}</p>
</div>
但这似乎不合法。
有更好的主意吗?或者显然,一个本地解决方案。
提前谢谢你。
您可以使用 ng-if 这样代码不会 运行 直到满足条件。
<div ng-repeat="element in elements | filter:searchText" ng-if="searchText.length > 0">
<p>{{ element.name }}</p>
</div>
请检查这个
$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>
希望这有效。