35

AngularJs のサービスにフィルターを挿入する方法があるかどうかを知りたいです。

私は試してきました

app.factory('educationService', [function($rootScope, $filter) {

    // ..... Some code

    // What I want
    console.log(dateFilter(new Date(), 'yyyy-MM-01'));

    // ..... Some code

}]);

したがって、サービスにフィルターを挿入できるかどうか、または別の方法でアクセスできるかどうかを知りたいです。

そして、この点に関するドキュメントへのリンクがあれば、それは本当に素晴らしいことです:)Angularのドキュメントを検索していて、これについて本当に役立つものは何も見つかりませんでした.

ありがとう :)

4

2 に答える 2

55

まず、次のようにフィルターを挿入する必要があります。

app.factory('myService', ['$rootScope', '$filter', function($rootScope, $filter) 

(配列は、ビルド プロセスで縮小を使用する場合にのみ必要です)

特定のフィルターをプログラムで呼び出すには:

$filter('date')(new Date(), 'yyyy-MM-01');

$filter(name)引数を指定して呼び出すことができる特定のフィルター関数を返します。

var dateFilter = $filter('date');
var filteredDate = dateFilter(new Date(), 'yyyy-MM-01')
于 2013-03-14T12:11:11.853 に答える
46

フィルタ機能は$injector、フィルタ名の末尾に。が付いた下に登録されFilterます。-- $filterProviderドキュメント

これは、Angularの組み込みフィルターだけでなく、独自のカスタムフィルターにも当てはまります。

したがって、次のdateFilterようにサービスにを注入できます(縮小しない場合)。

app.factory('educationService', [function($rootScope, dateFilter) {

フィルタを1つだけ使用している場合、この方法を使用すると、実際の依存関係をより具体的にすることができます。複数のフィルターを使用する必要がある場合は、$filter@Stewieのように挿入できます。

于 2013-03-14T18:35:20.467 に答える