vue render string как уже существующий компонент - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь создать приложение vue, которое получает из базы данных html в виде строки, как в следующем примере:

<b-field :label="field.nome" :message="field.message"><b-input :value="value" :type="field.type" :maxlength="field.maxlength" :expanded="true" v-model="inputValue"/></b-field>

Итак, как вы можете видеть, оно может содержать компоненты, такие как bПоле от буефы.У меня вопрос, могу ли я представить эту строку как фактический компонент buefy и его поведение?Не имеет значения, находится ли он в теге шаблона или через функцию рендеринга с JSX, я просто хочу знать, могу ли я это сделать и как.

1 Ответ

0 голосов
/ 23 октября 2018

Вам понадобится runtime + версия компилятора из vue, затем вы сможете создавать компоненты на лету:

const vm = Vue({
  template: "<b-field :label=...",
  data: ()=> ({
    field: {nome: ...}
  })
})

, которые вы можете смонтировать на элемент.

<span ref="placeholder"/>

vm.$mount(this.$refs.placeholder)
this.$on('$destroy', ()=> vm.$destroy())

или , если у вас есть несколько динамических компонентов:

<span ref="container"/>

vm.$mount()
this.$refs.container.appendChild(vm.$el)
this.$on('$destroy', ()=> vm.$destroy())
...