我有JSON数组,如:
var data = [
{
"name": "Jim",
"age" : 25
},
{
"name": "Jerry",
"age": 27
}
];
HTML中的:
<ul>
<li ng-repeat="val in data | filter:{age: age}:true">{{val.name}}</li>
</ul>
上面的代码工作正常,因为我想要输出,但我不想使用ng-repeat
创建循环,然后我过滤。
有没有其他方法可以直接从age = age
??
答案 0 :(得分:6)
过滤器可用于任何角度表达式(没有ngRepeat
- 具体关于它们。)
(它们甚至可以在JavaScript中使用。)
E.g。以下表达式显示与第一个用户(limitTo:1
)关联的数据,其年龄为25(filter:{age: 25}
),格式为JSON(json
):
{{data | filter:{age: 25}:true | limitTo:1 | json}}
另请参阅此 short demo 。
答案 1 :(得分:4)
正如@link在评论中提到的那样,没有办法从数组中获取具有所需年龄的对象而不循环遍历它。但是,如果您只想在数组中显示单个对象,那么您认为在此处使用ng-repeat
是不合适的,因此理想情况下,所需对象应存储在控制器中。
一种方法是在控制器中使用$filter
:
$scope.obj_with_correct_age = $filter("filter")(data, {age: age});
<li>{{ obj_with_correct_age.name }}</li>
答案 2 :(得分:1)
我意识到这是一个旧线程,但是为了完整性。
这有效:
{{data.Systems[data.Detail.SystemId].System}}
这样,您无需过滤data
。
答案 3 :(得分:0)
如果要解析名称的单个值。喜欢{&#34; name&#34;:&#34; value&#34;}。 所以在$ http发布之后,我假设您在var data = response中的响应。
现在找到,例如 console.log(data [0] .name); 在这里,结果将是 Jim