我是 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
andanotherValue
是控制器的作用域变量。这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';
});