ホームページ ウェブフロントエンド jsチュートリアル Angularjs_AngularJS でのフィルターの使用の詳細な説明

Angularjs_AngularJS でのフィルターの使用の詳細な説明

May 16, 2016 pm 03:11 PM
angularjs filters

フィルターの機能は、入力を受け取り、特定のルールに従って処理し、処理された結果をユーザーに返すことです。フィルターはテンプレート、コントローラー、またはサービスで使用でき、フィルターのカスタマイズも簡単です。

テンプレートでフィルターを使用する

フィルターは、次の構文式を使用してビュー テンプレートで使用できます:

{{ 式 | フィルタ }}

例: {{ 12 | 通貨 }} という形式は、通貨フィルターを使用して数値 12 を通貨形式にフィルターし、結果は $12.00 になります。

フィルターは、別のフィルターの結果に適用できます。これは「チェーン」と呼ばれ、次の構文で使用されます:

{{ 式 | フィルター 2 ... }}

フィルタではパラメータが必要な場合があります。構文は次のとおりです:

{{ 式 | フィルター:引数 1:引数 2:... }}

例: {{ 1234 |number:2 }} の形式は、number のフィルターを使用して、数値 1234 を小数点 2 桁の数値にフィルターします。結果は 1,234.00 です。

コントローラー、サービス、ディレクティブでフィルター
を使用する

コントローラー、サービス、ディレクティブでフィルターを使用できます。

これを行うには、依存関係名をコントローラー/サービス/ディレクティブ: フィルターに挿入する必要があります。たとえば、フィルターが数値の場合、依存関係を使用してnumberFilter を挿入する必要があります。挿入されたパラメーターは、最初のパラメーターとして値を受け取り、2 番目のパラメーターを使用してパラメーターをフィルター処理する関数です。

次の例では、filter というフィルターを使用します。このフィルターは、サブ配列に基づいて配列を削減できます。 {{ctrl.array|filter:'a'}} のようなマークアップをビュー テンプレートに適用することもできます。これにより、'a' の全文検索が行われます。ただし、ビュー テンプレートでフィルターを使用すると、各フィルターが再度フィルター処理され、配列が比較的大きい場合は複数回読み込まれることになります。

したがって、次の例ではコントローラー内のフィルターを直接呼び出します。これにより、コントローラーは必要に応じてフィルターを呼び出すことができます (例: バックエンド データがロードされたとき、またはフィルター式が変更されたとき)。

index.html:

<div ng-controller="FilterController as ctrl">
 <div>
  All entries:
  <span ng-repeat="entry in ctrl.array">{{entry.name}} </span>
 </div>
 <div>
  Entries that contain an "a":
  <span ng-repeat="entry in ctrl.filteredArray">{{entry.name}} </span>
 </div>
</div>
 
ログイン後にコピー

script.js:

angular.module('FilterInControllerModule', []).
controller('FilterController', ['filterFilter', function(filterFilter) {
 this.array = [
  {name: 'Tobias'},
  {name: 'Jeff'},
  {name: 'Brian'},
  {name: 'Igor'},
  {name: 'James'},
  {name: 'Brad'}
 ];
 this.filteredArray = filterFilter(this.array, 'a');
}]);
ログイン後にコピー

結果は次のとおりです:

All entries: Tobias Jeff Brian Igor James Brad
Entries that contain an "a": Tobias Brian James Brad
ログイン後にコピー

カスタムフィルターの作成:

独自のフィルターの作成は非常に簡単です。モジュールに新しいフィルター ファクトリ関数を登録するだけです。内部的には、filterProvider がここで使用されます。このファクトリー関数は、最初の引数として入力値を持つ新しいフィルター関数を返す必要があります。フィルター パラメーターはすべて、追加パラメーターとしてフィルター関数に渡されます。

このフィルター関数は単純な関数である必要があります。これは、ステートレスかつ冪等である必要があることを意味します。入力関数が変更されると、Angular はこれらのプロパティに依存してフィルターを実行します。

注: フィルターの名前は、有効な角度式識別子である必要があります。たとえば、大文字や orderBy などです。名前にはハイフンやピリオドなどの特殊文字は使用できません。フィルターに名前空間を付ける場合は、大文字 (myappSubsectionFilterx) またはアンダースコア (myapp_subsection_filterx) を使用できます。

次のフィルター例は文字列を反転します。さらに、文字列を大文字にする条件を追加できます。

index.html

<div ng-controller="MyController">
 <input ng-model="greeting" type="text"><br>
 No filter: {{greeting}}<br>
 Reverse: {{greeting|reverse}}<br>
 Reverse + uppercase: {{greeting|reverse:true}}<br>
 Reverse, filtered in controller: {{filteredGreeting}}<br>
</div>
 
ログイン後にコピー

script.js

angular.module('myReverseFilterApp', [])
.filter('reverse', function() {
 return function(input, uppercase) {
  input = input || '';
  var out = "";
  for (var i = 0; i < input.length; i++) {
   out = input.charAt(i) + out;
  }
  // conditional based on optional argument
  if (uppercase) {
   out = out.toUpperCase();
  }
  return out;
 };
})
.controller('MyController', ['$scope', 'reverseFilter', function($scope, reverseFilter) {
 $scope.greeting = 'hello';
 $scope.filteredGreeting = reverseFilter($scope.greeting);
}]);
ログイン後にコピー

結果は次のとおりです:

No filter: hello
Reverse: olleh
Reverse + uppercase: OLLEH
Reverse, filtered in controller: olleh
ログイン後にコピー

ステートフルフィルター

ステートフル フィルターは Angular では最適化できず、パフォーマンスの問題が発生することが多いため、ステートフル フィルターを作成することを強くお勧めします。多くのステートフル フィルターは、非表示の状態をモデルとして公開し、それをフィルター パラメーターに変換するだけで、ステートレス フィルターに変換されます。

ただし、ステートフル フィルターを作成する必要がある場合は、フィルターを $stateful としてマークする必要があります。これは、フィルターが各 $digest サイクル中に 1 回以上実行されることを意味します。

インデックス、html

<div ng-controller="MyController">
 Input: <input ng-model="greeting" type="text"><br>
 Decoration: <input ng-model="decoration.symbol" type="text"><br>
 No filter: {{greeting}}<br>
 Decorated: {{greeting | decorate}}<br>
</div>
 
ログイン後にコピー

script.js:

angular.module('myStatefulFilterApp', [])
.filter('decorate', ['decoration', function(decoration) {

 function decorateFilter(input) {
  return decoration.symbol + input + decoration.symbol;
 }
 decorateFilter.$stateful = true;

 return decorateFilter;
}])
.controller('MyController', ['$scope', 'decoration', function($scope, decoration) {
 $scope.greeting = 'hello';
 $scope.decoration = decoration;
}])
.value('decoration', {symbol: '*'});

ログイン後にコピー

結果は次のとおりです:

No filter: hello
Decorated: *hello*
ログイン後にコピー

次回はangularjsにおけるfilterの一般的な使い方について記事を書きたいと思います。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

VUE3 基本チュートリアル: データ フィルタリングのためのフィルタの使用 VUE3 基本チュートリアル: データ フィルタリングのためのフィルタの使用 Jun 15, 2023 pm 08:37 PM

VUE3 は現在フロントエンド開発で人気のフレームワークであり、その基本機能によりフロントエンド開発の効率を大幅に向上させることができます。中でもフィルターはVUE3では非常に便利なツールで、フィルターを使用することで簡単にデータの絞り込みや絞り込み、加工を行うことができます。では、フィルターとは何でしょうか?簡単に言えば、フィルターは VUE3 のフィルターです。これらは、ページ内でより望ましい結果を表示するために、レンダリングされたデータを処理するために使用できます。フィルターはいくつかあります

フィルターを使用して Vue でデータの書式設定とデータ フィルターを実装するためのヒント フィルターを使用して Vue でデータの書式設定とデータ フィルターを実装するためのヒント Jun 25, 2023 pm 06:49 PM

Vue.js は、フロントエンド開発者が優れたアプリケーションを開発するのに役立つ多くの便利な機能とツールを提供する人気のある JavaScript フレームワークです。中でもフィルターは Vue.js の非常に便利な機能で、データの書式設定やフィルター処理に使用できます。 Vue では、フィルターはテンプレートのパイプラインに相当し、データの処理と変換に使用できます。たとえば、フィルターを使用して日付形式を元の日付から次の日付に変更できます。

入門から習得まで、2022 年の最新 5 つの angularjs チュートリアル 入門から習得まで、2022 年の最新 5 つの angularjs チュートリアル Jun 15, 2017 pm 05:50 PM

Javascript は、コードの構成、コードのプログラミング パラダイム、およびオブジェクト指向理論の点で非常にユニークな言語です。しかし、JavaScript が 20 年間主流であったとはいえ、jQuery、Angularjs、さらには React などの人気のあるフレームワークを理解したい場合は、「Black Horse Cloud Classroom JavaScript Advanced Framework」を見てください。デザインビデオチュートリアル」。

PHP と AngularJS を使用して応答性の高い Web サイトを構築し、高品質のユーザー エクスペリエンスを提供します PHP と AngularJS を使用して応答性の高い Web サイトを構築し、高品質のユーザー エクスペリエンスを提供します Jun 27, 2023 pm 07:37 PM

今日の情報化時代において、ウェブサイトは人々が情報を入手し、コミュニケーションを図るための重要なツールとなっています。レスポンシブな Web サイトはさまざまなデバイスに適応し、ユーザーに高品質のエクスペリエンスを提供できます。これは、現代の Web サイト開発のホットスポットとなっています。この記事では、PHP と AngularJS を使用して応答性の高い Web サイトを構築し、高品質のユーザー エクスペリエンスを提供する方法を紹介します。 PHP の概要 PHP は、Web 開発に最適なオープンソースのサーバー側プログラミング言語です。 PHP には、学びやすさ、クロスプラットフォーム、豊富なツール ライブラリ、開発効率など、多くの利点があります。

PHP と AngularJS を使用して Web アプリケーションを構築する PHP と AngularJS を使用して Web アプリケーションを構築する May 27, 2023 pm 08:10 PM

インターネットの継続的な発展に伴い、Web アプリケーションは企業情報構築の重要な部分となり、最新化作業に必要な手段となりました。 Web アプリケーションの開発、保守、拡張を容易にするために、開発者は開発ニーズに合った技術フレームワークとプログラミング言語を選択する必要があります。 PHP と AngularJS は非常に人気のある 2 つの Web 開発テクノロジであり、それぞれサーバー側とクライアント側のソリューションであり、これらを組み合わせて使用​​すると、Web アプリケーションの開発効率とユーザー エクスペリエンスを大幅に向上させることができます。 PHPPHPの利点

Flask と AngularJS を使用してシングルページ Web アプリケーションを構築する Flask と AngularJS を使用してシングルページ Web アプリケーションを構築する Jun 17, 2023 am 08:49 AM

Web テクノロジーの急速な発展に伴い、シングル ページ Web アプリケーション (SinglePage Application、SPA) は、Web アプリケーション モデルとしてますます人気が高まっています。従来の複数ページの Web アプリケーションと比較して、SPA の最大の利点は、ユーザー エクスペリエンスがよりスムーズであり、サーバーのコンピューティング負荷も大幅に軽減されることです。この記事では、FlaskとAngularJSを使って簡単なSPAを構築する方法を紹介します。 Flask は軽量の Py です

PHP プログラミングで AngularJS を使用するにはどうすればよいですか? PHP プログラミングで AngularJS を使用するにはどうすればよいですか? Jun 12, 2023 am 09:40 AM

Web アプリケーションの人気に伴い、フロントエンド フレームワーク AngularJS の人気も高まっています。 AngularJS は、Google が開発した JavaScript フレームワークで、動的な Web アプリケーション機能を備えた Web アプリケーションの構築に役立ちます。一方、バックエンド プログラミングの場合、PHP は非常に人気のあるプログラミング言語です。サーバーサイド プログラミングに PHP を使用している場合、PHP と AngularJS を使用すると、Web サイトにさらに動的な効果がもたらされます。

PHP と AngularJS を使用してオンライン ファイル管理プラットフォームを開発し、ファイル管理を容易にする PHP と AngularJS を使用してオンライン ファイル管理プラットフォームを開発し、ファイル管理を容易にする Jun 27, 2023 pm 01:34 PM

インターネットの普及に伴い、ネットワークを使用してファイルを転送したり共有したりする人が増えています。ただし、さまざまな理由により、FTP などの従来の方法をファイル管理に使用しても、現代のユーザーのニーズを満たすことができません。したがって、使いやすく、効率的で安全なオンライン ファイル管理プラットフォームを確立することがトレンドになっています。この記事で紹介するオンライン ファイル管理プラットフォームは、PHP と AngularJS をベースにしており、ファイルのアップロード、ダウンロード、編集、削除などの操作を簡単に実行でき、ファイル共有、検索、検索などの一連の強力な機能を提供します。

See all articles