在AngularJS中显示一个项目而不使用ng-repeat

时间:2014-05-26 09:17:02

标签: angularjs

我有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 ??

的数组中选择DATA

4 个答案:

答案 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