在Angular视图中,我定义了一个变量data
,如下所示:
[{"name":"science", count: 3},
{"name":"action", count: 1},
{"name":"thriller", count: 1},
{"name":"article", count: 1},
]
" 所以在html文件中我想得到名称"科学"或"文章"
我试过这样:
<span ng-repeat="item in data| filter: {name: "science"}">
{{ item.count }}
</span>
但这没什么,我猜是因为过滤器。我怎样才能做到这一点?任何人都可以帮助我吗?
答案 0 :(得分:-1)
首先,您要使用AngularJS(1.x)语法,使用Angular(2+),您应该使用ngFor
和自定义管道进行过滤。
<span> <tr *ngFor="item in data | sciencefilter:'science'"> {{ item.count }} </span>
,您的过滤器应为
@Pipe({
name: 'sciencefilter'
})
@Injectable()
export class ScienceFilterPipe implements PipeTransform {
transform(items: any[], type: string): any {
return items.filter(item => item.id.indexOf(type) !== -1);
}
}
不使用过滤器
count :number;
然后,
this.count = this.items.filter(t=>t.name ==='science');
和组件
<span>
{{ count.length }}
</span>
答案 1 :(得分:-1)
你可以像这样使用管道 -
import {Injectable, Pipe, PipeTransform} from 'angular2/core';
@Pipe({
name: 'myfilter'
})
@Injectable()
export class MyFilterPipe implements PipeTransform {
transform(items: any[], args: any[]): any {
return items.filter(item => item.id.indexOf(args[0]) !== -1);
}
}
模板看起来像这样 -
*ngFor="let element of (elements | myfilter:'123')"