如何将对象属性别名为ng repeat中的变量

How to alias object property as variable in ng-repeat

本文关键字:repeat ng 变量 别名 对象 属性      更新时间:2023-09-26

我在一个对象数组上重复,我希望循环中的变量只引用每个对象的一个属性。

简化数据示例:

var data = [
  {
    'name': {
      'first': 'John',
      'last': 'Johnson'
    }
    'age': 45
  },
  {
    'name': {
      'first': 'Larry',
      'last': 'Wilson'
    }
    'age': 45
  }
]

我可以做:

<div ng-repeat="person in data">{{ person.name.first }}</div>

但我更愿意做的是只关注我正在使用的对象的唯一部分,并做这样的事情:

<div ng-repeat="person.name in data as name">{{ name.first }}</div>

但这似乎不起作用——目前这可能吗?

您可以使用ng-init:

<div ng-repeat="person in data" ng-init="name=person.name">{{ name.first }}</div>

https://docs.angularjs.org/api/ng/directive/ngInit

小心使用"ng-init"技巧。这将把"name"变量绑定到"person"对象,而不是为您可能需要的数据[$index].name表达式创建实际别名。

// Init model.
    data['fooPerson'] = {name: {first:"foo"}, age:64}
    $timeout(function(){
      data['fooPerson'] = {name: {first: "bar"}, age:51}
    }, 1000);
// Result after ~1 second:
// {{ name.first }} --> still "foo";