Проблема здесь, похоже, в том, что в первом примере у вас есть один div
с несколькими компонентами в нем:
<div id="controls">
<NavControl />
<NavControl />
<NavControl />
</div>
Проблема в том, что во втором примере вы создаете несколько div
элементы с одинаковым идентификатором, и каждый из них имеет вложенный компонент внутри.
Здесь, в al oop, вы создаете несколько элементов div
с id="controls"
<div id="controls" v-bind:key="control.id" v-for="control in controls">
<NavControl v-bind:control="control" />
</div>
В итоге получается что-то вроде этого:
<div id="controls">
<NavControl />
</div>
<div id="controls">
<NavControl />
</div>
<div id="controls">
<NavControl />
</div>
Вероятно, вы бы увидели это лучше, если бы проверили свой код в инструментах браузера.
В качестве примечания: пожалуйста, имейте в виду, что если вы по какой-то причине захотите сделать что-то подобное, вы должны использовать class
вместо id
.
Решение:
Вместо этого вы хотели бы создать несколько компонентов внутри вашего <div id="controls"></div>
.
Для этого вы должны поместить v-for
внутри компонента, а не внешний div
.
<NavControl v-for="control in controls" v-bind:control="control" :key="control.id"/>