Javascript 单值角度JS滤波器
以下是我尝试过的:Javascript 单值角度JS滤波器,javascript,angularjs,Javascript,Angularjs,以下是我尝试过的: <section data-ng-controller="HomeController"> <table ng-repeat="item in servers | unique:'_id.idc'"> <tr> <td> {{ item._id.idc }} </td> </tr> <tr ng-repeat="data in servers | filter:{_id.idc: 'LH5'}: t
<section data-ng-controller="HomeController">
<table ng-repeat="item in servers | unique:'_id.idc'">
<tr>
<td> {{ item._id.idc }} </td>
</tr>
<tr ng-repeat="data in servers | filter:{_id.idc: 'LH5'}: true ">
<td>{{data}}</td>
</tr>
</table>
如果我移除过滤器,这里是来自{{data}的一些示例
{"_id":{"cluster":0,"idc":"LH8"},"Physical":{"SumCores":488,"SumMemory":3232},"Virtual":{"SumCores":2,"SumMemory":8}}
{"_id":{"cluster":1,"idc":"LH8"},"Physical":{"SumCores":256,"SumMemory":1024},"Virtual":{"SumCores":232,"SumMemory":469}}
为什么它不能正确过滤?unique可以很好地工作,但单过滤器不能
编辑:我还检查了唯一筛选器是否与之冲突,但如果没有该筛选器,它仍然无法工作。您的筛选器对于嵌套对象的格式不正确。应该是:
ng-repeat="data in servers | filter: { _id: { idc: 'LH5' } }"
下面是一个有效的简化示例
var myApp=angular.module('myApp',[]);
myApp.controller('MyController',['$scope',函数($scope){
$scope.filter='red';
$scope.cars=[
{
制作:'福特',
模型:“焦点”,
年份:2012年,
颜色:{
内饰:“红色”,
外观:“蓝色”
}
},
{
制作:'福特',
模型:“融合”,
年份:2009年,
颜色:{
室内:“绿色”,
外观:“黑色”
}
},
{
制造‘本田’,
模型:“公民”,
年份:2011年,
颜色:{
内饰:“红色”,
外观:“银色”
}
}
]
}]);代码>
内部颜色过滤器:
{{car.year}{{car.make}{{{car.model}}
首先添加数据,如下所示
<tr ng-repeat="data in servers | filter:{data.idc : 'LH5'}">
<td>{{data}}</td>
</tr>
{{data}}
如果您想以自己的方式使用,您需要从中再添加一个JS文件
有关更多详细信息,请参见此从您的示例中,我假设您的数据结构如下所示:
data: {
propA: 'A',
proB: 'B',
_id: {
idc: 'LH5'
}
}
您的问题是,您试图在迭代对象的子属性上获得匹配
从文档中:
请注意,命名属性将匹配同一级别的属性
仅限,而特殊$property将匹配同一服务器上的属性
水平或更深。例如{name:{first:'John',last:
'Doe'}}将不会由{name:'John'}匹配,而是由
{$:'约翰'}
所以我会尝试:
<tr ng-repeat="data in servers | filter:{$: 'LH5'}: true ">
<td>{{data}}</td>
</tr>
{{data}}
如果您是按嵌套属性筛选的,则传递给筛选器的表达式的计算结果不是有效的javascript对象。你应该做:
<tr ng-repeat="data in servers | filter:{_id: [{idc: 'LH5'}]}">
请阅读下面的参考资料
用于过滤AngularJs中的单个值
我希望它能帮助你恐怕也不起作用-这在语法上是不正确的,你缺少了一个“现在试试,我已经改变了它它这一点不起作用:filter:{{u id.idc:'LH5'}
错误:[$parse:syntax]语法错误:令牌“{”是意外的,在表达式的第25列应该是[:][servers | filter:{u id{idc:'LH5'}}]从[{idc:'LH5'}]开始。http://errors.angularjs.org/1.2.28/$parse/syntax?p0=%7B&p1=是%20意外的%2C%20预期的%20%5B%3A%5D&p2=25&p3=服务器%20%7C%20过滤器%3A%20%7B%20_-id%20%7B%20idc%3A%20'LH5'%20%7D%20%7D&p4=%7B%20idc%3A%20'LH5'%20%7D%20%7D
修复了它!
<tr ng-repeat="data in servers | filter:{_id: [{idc: 'LH5'}]}">