Могу ли я по-разному выбирать, какой компонент Vue.js использовать в шаблоне? - PullRequest
1 голос
/ 18 апреля 2019

Допустим, у меня есть список объектов, например:

[
  {
    "component": "component-a",
    "data": { "x": 42 }
  },
  {
    "component": "component-b",
    "data": { "state": "New York" }
  }
]

Я перебираю этот список примерно так:

<div v-for="item in items">
  // ...
</div>

Я хочу выбрать, какой компонентиспользовать на основе item.component в каждой итерации.Есть ли способ получить Vue.js для рендеринга следующего?

<div>
  <component-a data="{x:'a'}"></component-a>
</div>
<div>
  <component-b data="{state:'New York'}"></component-b>
</div>

Ответы [ 2 ]

2 голосов
/ 18 апреля 2019

вы ищете динамические компоненты

<div v-for="item in items">
  <component v-bind:is="item.component" data="item.data"></component>
</div>
0 голосов
/ 18 апреля 2019

Вы можете создать динамический компонент, используя свойство is в html. Свойство is потребует передачи строки (имени компонента) и преобразует ее в реальный компонент.

<div v-for="item in items">
    <div v:is="item.component" :data="item.data"></div>
</div>

Вы должны связать оба свойства data и is, используя префикс :, поскольку переменные должны передаваться компоненту как переменные из объекта item. Если вы не используете их, они будут переданы в виде строк (например, 'item.component'), что неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...