有没有办法从控制器获取数据到过滤器?

时间:2012-12-17 06:24:56

标签: html angularjs

我是angularjs的新手。

我想在我的控制器中使用过滤器中的数据。

有没有具体的方法来做数据?

2 个答案:

答案 0 :(得分: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']
}; });

答案 1 :(得分:2)

最好的方法是将数据作为附加参数传递:<span>{{ value | filter:anotherValue }}</span>。这样,valueanotherValue是控制器的范围变量。 filter是您的自定义过滤器。过滤器将接收anotherValue内容作为第二个参数,对其进行更改将重新应用过滤器。这是fiddle

另一种解决方案是,如果在编写过滤器的任何时候传递信息都不合适,那就是在它们之间使用共享服务。然后,您可以从控制器公开属性并在过滤器中使用。另一个fiddle here(只需更改输入文本值)。

基本上,这就是小提琴上发生的事情:

// 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';
});