关于angularjs:Angular:防止显示指令直到搜索栏中的用户类型

Angular: Preventing Display of Directives Until User Types in Search Bar

我正在与Angular合作,显示页面上具有角色的用户列表,并允许基于电子邮件地址进行筛选。这很有效,但是Angular添加了很多DOM元素和观察者,这大大降低了页面的速度。为了避免这个问题,我只想在文本输入搜索字段时显示用户。

下面是搜索框和ng repeat创建用户指令的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!-- Search -->
<h3 class="heading">Showing<span ng-show="searchUsers.length"> {{filteredUsers.length}} of</span> {{users.length}} Users

    <input type="search" name="search_users" id="search_users" placeholder="Search all users" ng-model="searchUsers" ng-value="" />

<!-- /Search -->

<!-- Users -->
<section id="users" class="cards masonry" ng-show="!searchUsers.length || filteredUsers.length" masonry="true" data-images-loaded="true">
    <!-- User Cards -->
    <user-card ng-model="user" ng-repeat="user in filteredUsers = (users | filter: { Email: searchUsers })" ng-show="searchUsers.length && filteredUsers.length"></user-card>
    <!-- /User Cards -->
</section>
<!-- /Users -->

用户隐藏,直到您在搜索栏中键入,但它只在视觉上用ng-show隐藏用户,但他们仍然将其添加到dom(在chrome dev工具中检查时我可以看到),观察者仍然被添加。

当我在搜索栏中输入时,用户被正确过滤,不匹配的用户被从dom中删除,观察者的数量减少,这是很好的。

我想做的是防止Angular在输入搜索字段之前将用户添加到DOM中。

有人对最好的方法有什么建议吗?


使用ng if而不是ng show。这将从DOM中删除元素,而不是不显示它们。