2017-01-12 7 views
0

Angularを使用して、ページに役割を持つユーザーの一覧を表示し、電子メールアドレスに基づいてフィルタリングを許可します。これはうまくいっていますが、Angularは多くのDOM要素とウォッチャーを追加します。これはページの速度を大幅に低下させます。この問題を防ぐため、テキストを検索フィールドに入力したときにのみユーザーを表示しようとしています。ここで 角度:検索バーにユーザータイプが入力されるまでの指示の表示を防止する

は、検索ボックスのコードとユーザー・ディレクティブの作成ngのリピートです:あなたは、検索バーに入力されるまで隠されて

<!-- Search --> 
<h3 class="heading">Showing<span ng-show="searchUsers.length"> {{filteredUsers.length}} of</span> {{users.length}} Users</h3> 
<div id="search_users_container"> 
    <input type="search" name="search_users" id="search_users" placeholder="Search all users" ng-model="searchUsers" ng-value="" /> 
</div> 
<!-- /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-をユーザーに隠し表示しますが、それらはDOMに追加されます(Chrome開発ツールをいつ調べるかはわかります)。ウォッチャーはまだ追加されています。

検索バーに入力すると、ユーザーが正しくフィルタリングされ、一致しないユーザーがDOMから削除され、ウォッチャーの数が減りました。

私が検索フィールドに入力するまでAngularがユーザーをDOMに追加しないようにします。

これを行う最善の方法はありますか?

+0

あなたはあなたのために働くでしょうか?要素は表示されずにDOMから削除されます。 – Anthony

答えて

1

ng-showの代わりにng-ifを使用します。 DOMを表示しないでDOMから要素を削除します。

+0

うわー、それは簡単でした!完璧に働いた。ウォッチャーとウォッチャーの削減は、検索結果が表示された後にのみ追加されることがわかりました。ありがとうございました!私はupvoteをしたいが、より多くの評判のポイントが必要です。 –

+0

問題ありません:)。あなたの問題を助け、解決した場合には、回答を合格とマークすることができます。 – Anthony

+0

完了!おかげでアンソニー:) –

関連する問題