Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单值角度JS滤波器_Javascript_Angularjs - Fatal编程技术网

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'}]}">