Ответ 1
Вы можете сделать это с помощью ng-init
:
<div ng-repeat="person in data" ng-init="name=person.name">{{ name.first }}</div>
Я повторяю массив объектов и хочу, чтобы моя переменная в цикле ссылалась только на одно свойство каждого объекта.
Пример упрощенных данных:
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>
Остерегайтесь использования трюка "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";