我正在尝试做的事情:
我在关联数组上使用 ng-repeat 指令,我想对其进行过滤。内置角度过滤器不适用于关联数组/哈希。因此,我正在尝试编写自己的过滤器(灵感来自http://angularjs.de/artikel/angularjs-ng-repeat http://angularjs.de/artikel/angularjs-ng-repeat;它是德语的,但重要的代码位于标题“Beispiel 2: Filtern von Hashes mittels eigenem Filter”下方,这意味着“示例 2:使用您自己的过滤器过滤哈希”)。
ng-重复:
tr ng-repeat="(key, machine) in machines | customFilter | orderObjectBy:'name':false"
注意:orderObjectBy也是一个customFilter。
过滤器:
toolApp.filter('customFilter', [function(){
return function(machines){
var result = {};
angular.forEach(machines, function(machine, key){
/*if(machine.name.contains(filter)){
result[key] = machine;
}*/
//if(machine.name.contains("a")){
result[key] = machine;
//}
});
return result;
};
}]);
该过滤器使用硬编码的“过滤标准”。但我想在列表上方有一个文本框,用户可以在其中输入“过滤条件”。我的问题是,我不知道如何将此值插入到过滤器中。我在互联网上找不到太多内容,而且我找到的内容对我不起作用。
有谁知道如何插入值或可能采用不同的方法。
非常感谢您的每一个回答!如果您需要更多信息,请告诉我!我尽量保持简短:>。
来自德国的问候
您的自定义过滤器可能有参数。
假设您有一个输入字段:
<input ng-model="myParam">
和像你一样的 ng-repeat:
<tr ng-repeat="(key, machine) in machines | customFilter:myParam | orderObjectBy:'name':false" >
那么您可以在自定义过滤器中访问此参数:
toolApp.filter('customFilter', [function(){
return function(machines, myParam){
var result = {};
angular.forEach(machines, function(machine, key){
if(machine.name.contains(myParam)){
result[key] = machine;
}
});
return result;
};
}]);
笔记:
请注意,myParam 值是用“未定义”值初始化的。您必须在控制器中设置默认值或在 customFilter 中处理它。否则,您只能在开始输入后看到您的列表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)