Я, вероятно, делаю что-то дремучее, но на какое-то время ударился головой об этом, я подумал, что попрошу здесь посмотреть, может ли кто-нибудь еще понять, где я иду не так.
Итак, это несколько упрощено, но по сути я использую vue.js и у меня есть цикл v-for для создания красивого списка, но я хочу получить доступ к данным из другого многомерного объекта, используя значение цикла в качестве ключа:
<li v-for="bar in foo.bars">{{ list[bar].name }}</li>
, где список определяется в data
следующим образом:
list: {
"somekey":{"name":"Joe Bloggs","email":"joe.bloggs@"},
"someotherkey":{"name":"John Doe","email":"john.doe@"},
"anotherkey":{"name":"A N Other","email":"a.n.other@"}
etc.
},
bars
сам по себе также многомерен, но особенности этого здесь не имеют большого значения.Важно то, что результирующее значение bar
является ключом для list
.
Это приводит к появлению следующих предупреждений / ошибок консоли:
vue.js: 597 [Vue warn]: Ошибка при рендеринге: «TypeError: Невозможно прочитать свойство 'name' из undefined" TypeError: Невозможно прочитать свойство 'name' из undefined
Однако, если я использую:
<li v-for="bar in foo.bars">{{ list[bar] }}</li>
Я не получаю ошибок, и выводится следующее:
- {"name": "Joe Bloggs", "email": "joe.bloggs @"}
- {"имя": "Джон Доу", "электронная почта": "john.doe @"}
- и т. д.
Как я и ожидал.Аналогично, если я использую:
<li v-for="bar in foo.bars">{{ list['anotherkey'].name }}</li>
, я получаю
- {"name": "AN Other", "email": "another @"}
Опять же, это как я и ожидал.Таким образом, все данные объекта есть и доступны (и, кажется, все в порядке через консоль и надстройку Vue DevTools), но только при использовании list[bar].name
(или list[bar][name]
, list[bar].email
и т. Д.) Вv-for, это что-то вроде головного скребка.
Есть идеи?
Спасибо!