私はangularjsを初めて使用します。
コントローラーにあるフィルターのデータを使用したい。
datを行うための特定の方法はありますか?
コントローラー内
$scope.variable=['1','2','3'];
ビューで
<span>{{ variable | f1 }}
フィルター内
angular.module('Filters', ['Services']).filter('f1', function() {
var events=Events.query();
return function(input) {
alert(input)->['1','2','3']
}; });
最良の方法は、データを追加のパラメーターとして渡すことです<span>{{ value | filter:anotherValue }}</span>
。このように、value
とanotherValue
はコントローラーのスコープ変数です。これfilter
はカスタムフィルターです。anotherValue
フィルタは2番目のパラメータとしてコンテンツを受け取り、それを変更するとフィルタが再適用されます。これがフィドルです。
別の解決策は、フィルターを作成するたびに情報を渡すことが適切でない場合は、それらの間で共有サービスを使用することです。次に、コントローラーからプロパティを公開して、フィルターで使用できます。ここにもう1つのフィドルがあります(入力テキストの値を変更するだけです)。
基本的に、これはフィドルで起こることです:
// sets the shared data
mod.controller('Ctlr', function(sharedService) {
sharedService.data = 'something';
}
// uses the shared data
mod.filter('customFilter', function(sharedService) {
return function(input) {
return input + sharedService.data;
};
});
// the shared service that holds the data
mod.service('sharedService', function(){
this.data = 'default value';
});