【问题标题】:Can someone explain Angular as-for-in expression notation?有人可以解释 Angular as-for-in 表达式符号吗?
【发布时间】:2017-03-30 00:15:21
【问题描述】:

在 Angular 循环(ng-repeat、ng-options)中,您可以使用以下语法:

item as item.label for item in items

有人能解释一下表达式中的每个标记在那里做什么以及它的含义吗?你能指出我的文档吗?我不知道要搜索什么(搜索“as”或“for”是没用的)。 ng-repeat 或 ng-options 的文档中没有提到它。

我知道它可以让您从对象列表中选择一个对象,但是“item”在表达式中出现了两次,我不清楚该标记在该表达式中的作用。

对不起,如果这一切都记录在某个我找不到的地方......

【问题讨论】:

标签: javascript angularjs loops iteration


【解决方案1】:

你有一个数组“项目”。你正在与它互动

item in items

作为您从该页面未完全复制的示例“https://docs.angularjs.org/api/ng/directive/ngOptions”通常会创建一个下拉列表,现在存在的问题是您当前在迭代中拥有的“item”对象具有更多字段而不仅仅是一个字符串显示为下拉条目的标签。这里又是对象:

$scope.items = [{
  id: 1,
  label: 'aLabel',
  subItem: { name: 'aSubItem' }
}, {
  id: 2,
  label: 'bLabel',
  subItem: { name: 'bSubItem' }
}];

那么你想展示什么?是的,你想显示“item.label”。 就是这样

item as item.label

确实如此。它告诉循环使用当前的“item.label”值作为这个特定循环的“item”。

【讨论】:

  • 你可以写whatyouwant as item.label,但是如果你期望第一个item有用的话,这个例子就会产生误导
  • 这很好,但不完整。我有另一个例子,它有item.name as item.label,它可以工作!但是不知道name对第一项有什么影响。两个item 需要匹配吗?我可以使用a as b.label for c in items,如果不能,为什么不呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-10
  • 2010-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多