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>. 这样,valueandanotherValue是控制器的作用域变量。这filter是您的自定义过滤器。过滤器将接收anotherValue内容作为第二个参数,对其进行更改将重新应用过滤器。这是一个小提琴

另一种解决方案是,如果您在编写过滤器时始终传递信息是不合适的,则在它们之间使用共享服务。然后,您可以从控制器公开属性并在过滤器中使用。这里的另一个小提琴(只需更改输入文本值)。

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

// 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 回答