我对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>
答案 0 :(得分:0)
答案 1 :(得分:0)
好吧,正如我想象的那样,答案与set theory
比与angular
更相关。
我刚刚在空集和每个结果之间创建了一个union
,并且它有效。
.filter('byField', function () {
return function (results, options) {
var items = { options: options, out: [] };
angular.forEach(results, function (value, key) {
if (options.length) {
for (var i in this.options) {
if ((options[i].value === value.fieldId &&
options[i].name === "Field" &&
options[i].ticked === true)) {
this.out.push(value);
}
}
} else {
this.out = results.slice();
}
}, items);
return items.out;
};
})