AngularJS在数组的子元素上过滤列表
AngularJS filter list on sub element in array
我试图在列表上创建一个简单的AngularJS过滤器。但是,我要筛选的元素是数组中的子元素。
(JSFIDDLE)对象:
elements = [{
'claim': [{value:'foo'}],
class: 'class1',
subject: 'name1'
}, {
'claim': [{value:'bar'}],
class: 'class1',
subject: 'name2'
}, {
'claim': [{value:'baz'}],
class: 'class1',
subject: 'name2'
}, {
'claim': [{value:'quux'}],
class: 'class1',
subject: 'name3'
}];
HTML: <tr class='claimrow'
data-ng-repeat='c in elements | filter:{claim[0].value:srcBoxFilter} | orderBy: "claim[0].value" '>
order by处理语法"claim[0]"。值",但过滤器没有。
生成一个错误:
Error: Syntax Error: Token '[' is unexpected, expecting [:]
at column 25 of the expression
[elements | filter:{claim[0].value:srcBoxFilter} | orderBy: "claim[0].value"]
starting at [[0].value:srcBoxFilter} | orderBy: "claim[0].value"].
有趣的问题。特别是因为嵌套的数组值用于排序而不是过滤。我尝试了一下您的JSFiddle,但无法从盒子中获得任何工作。你可以很容易地通过编写自己的过滤器来解决这个问题。
我已经更新了您的JSFiddle来展示如何做到这一点。我对您的代码所做的唯一更改如下所示:
JavaScriptmyApp.filter('byFirstClaimValue', function () {
return function (items, filterText) {
if(!filterText)
return items;
var out = [];
for (var i = 0; i < items.length; i++) {
if (items[i].claim[0].value.toLowerCase().indexOf(filterText.toLowerCase()) > -1) {
out.push(items[i]);
}
}
return out;
}
});
相关文章:
- 条件过滤列表显示在angularjs中
- 如何在AngularJS中按变量过滤列表
- 在 Javascript 中过滤列表
- Ember - 绑定到数组控制器中的过滤列表,然后添加新记录
- Vue.js 1.0.15 过滤列表无法读取未定义的属性
- 过滤列表并通过 ajax 请求数据
- Angularjs 使用选择值过滤列表数据
- 点击Angular过滤列表中的函数
- Angular.js可过滤列表,通过选择字段和可点击地图预定义值
- AngularJS-我应该如何处理多个动态下拉列表来过滤列表
- 如果过滤函数是异步的,如何使用lodash过滤列表
- 过滤列表与子字符串javascript
- AngularJS在数组的子元素上过滤列表
- 按首字母过滤列表项
- jQuery mobile:处理大型过滤列表
- JQuery排序和过滤列表
- 如何在过滤列表中使用第n子节点
- 通过侧边栏过滤列表
- 显示'没有项目'使用jQuery插件过滤列表项时的消息
- ng-从过滤列表中删除时重复动画