Представьте себе приложение Vue.js, в котором структура данных в firebase будет выглядеть примерно так:
item: {
name: itemName,
childOne: {
subChildA: true,
subChildB: true
},
childTwo: {
subChildA: true,
subChildB: true
}
}
Теперь у меня есть компонент, в котором мне нужно указать длину дочерних узлов (эти дочерние узлы будут добавлены только позже).
Моей первой мыслью было просто сделать это, но эта стратегия не работает:
<tbody>
<tr v-for="item in items" >
<td>
{{item.childOne.length - item.childTwo.length}}
</td>
</tr>
</tbody>
Итак, в качестве альтернативы я получил такую длину:
<tbody>
<tr v-for="item in items" >
<td>
{{Object.keys(item.childOne).length - Object.keys(item.childTwo).length}}
</td>
</tr>
</tbody>
Как я уже сказал, мне нужно визуализировать этот компонент до создания дочерних элементов ... Эти дочерние узлы позже условно создаются с помощью облачной функции Google, поэтому я неизбежно начну с этой простой структуры:
item: {
name: itemName,
}
... но на этом этапе я получаю сообщение об ошибке:
TypeError: Невозможно преобразовать неопределенный или нулевой объект
в Function.keys ()
Я думаю, что если я использую первую стратегию, vue.js достаточно умен, чтобы избежать этой ошибки отображает компонент и ничего не отображает, если нет дочерних элементов, но он не может получить длины .
Вторая стратегия отлично работает, когда я добавляю дочерние элементы, но она не может справиться с первоначальным отсутствием данных и даже не отображает представление .
Есть ли способ предотвратить эту ошибку, используя вторую стратегию, когда дочерние узлы еще не существуют?