我是angularjs的新手。
我想在我的控制器中使用过滤器中的数据。
有没有具体的方法来做数据?
答案 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>
。这样,value
和anotherValue
是控制器的范围变量。 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';
});