AngularJS中的理解表达是什么?

And*_*hev 16 angularjs

关于理解表达,我有几个问题在脑子里嗡嗡作响:

  • 它定义的数据结构是什么?
  • 它是否改编自其他语言?
  • 它在AngularJS中的用途在哪里?此API仅适用于选择元素吗?

来自文档:

ngOptions - comprehension_expression - 采用以下形式之一:

对于数组数据源:

  • 数组中值的标签
  • 选择作为数组中值的标签
  • 按组分组标记数组中的值
  • 通过trackexpr为数组轨道中的值按组选择标签

对于对象数据源:

  • 对象中的(键,值)标签
  • 选择对象中的(键,值)标签
  • 对象中的(键,值)按组标记
  • 为对象中的(键,值)按组选择标签

pac*_*age 16

理解表达式只是一种以特殊方式格式化的字符串,可被select指令识别.

它背后没有任何魔力,只有几种格式,因为有很多方法可以处理和表示你的集合(模型的数据结构,项目/项目属性选择作为范围的模型,关于标签的一些其他选项,分组等) .当你考虑所有这些选项时,允许复杂的表达式并不奇怪.

假设你有这样的代码:

<select
  ng-model="color"
  ng-options="c.name group by c.shade for c in colors"></select>
Run Code Online (Sandbox Code Playgroud)

为了抛弃理解表达式并使用属性,你会写这样的东西:

<select
  ng-model="color"
  ng-data-type="object"
  ng-data="colors"
  ng-select="c"
  ng-label="c.name"
  ng-group-by="c.shade"></select>
Run Code Online (Sandbox Code Playgroud)

扩展API后,属性方法可能会变得丑陋.此外,通过理解表达式,使用过滤器更容易.