【发布时间】:2016-01-08 14:25:53
【问题描述】:
我是 angular 的新手,我不确定如何控制过滤器的行为。
在应用程序中,我有两个不同的single-select 下拉控件,用于过滤我的数据集的结果并填充表格。然而,即使这些过滤器工作,结果取决于两个控件,如果两者都没有被使用,则返回空集。所以,我的问题是:我怎样才能有选择地使用这些过滤器?那么,当过滤器未使用时,应用程序会返回每个结果,还是返回由其中一个控件或两者都过滤的结果?
谢谢
代码如下:
AngularJS
每个控件的过滤器。它们看起来非常相似:
.filter('byField', function () {
return function (results, options) {
var items = { options: options, out: [] };
angular.forEach(results, function (value, key) {
for (var i in this.options) {
if ((options[i].value === value.fieldId &&
options[i].name === "Field" &&
options[i].ticked === true)) {
this.out.push(value);
}
}
}, items);
return items.out;
};
})
.filter('byClass', function () {
return function (results, options) {
var items = { options: options, out: [] };
angular.forEach(results, function (value, key) {
for (var i in this.options) {
if ((options[i].value === value.documentClass &&
options[i].name === "Class" &&
options[i].ticked === true)) {
this.out.push(value);
}
}
}, items);
return items.out;
};
})
HTML
这是我正在做的填充表的rows:
<tr ng-repeat="result in results | byField:outputFields | byClass:outputClasses">
<td>{{result.documentId}}</td>
...
</tr>
【问题讨论】: