1

私はangularjsを初めて使用します。

コントローラーにあるフィルターのデータを使用したい。

datを行うための特定の方法はありますか?

4

2 に答える 2

3

コントローラー内

$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']
}; });
于 2012-12-17T08:19:52.803 に答える
2

最良の方法は、データを追加のパラメーターとして渡すことです<span>{{ value | filter:anotherValue }}</span>。このように、valueanotherValueはコントローラーのスコープ変数です。これ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';
});
于 2012-12-17T10:20:43.797 に答える