我正在製作一個表單生成器,它使用輸入字段,按鈕等組件。我希望能夠根據我傳遞給它的選項生成表單。我不能讓它渲染組件。如何在Vue JS中動態地呈現組件?
我試圖返回純HTML但不會呈現組件。
我把從我Home.vue模板的形式產生,我想有一個選項對象的形式是這樣的:
options: {
name: {
type: 'input',
label: 'Name'
},
submit: {
type: 'button',
label: 'Send'
}
}
模板:
<template>
<form-generator :options="options"></form-generator>
</template>
在表單生成器組件我已經嘗試了多種東西,如:
<template>
{{ generateForm(this.options) }}
// ... or ...
<div v-html="generateForm(this.options)"></div>
</template>
我包括所有組件,如:
import {
FormButton,
FormInput
} from './FormComponents'
現在最後一部分是我如何使FormInput
呈現?
這不工作,因爲它的字面輸出HTML:
methods: {
generateForm(options) {
// .. do stuff with options ..
var form = '<form-input />'
return form
}
}
這可以工作,如果我直接控制組件。我正在使用Quasar Framework atm。而對於一個按鈕,您需要在文本 之間放置文本,如下所示:http://quasar-framework.org/components/button.html#Basic-Usage ...還可以接受一些自定義屬性,如「圓」等等。使用你的例子意味着我需要包裝框架的每一個組件,這取決於他們需要什麼作爲輸入。在這個用例中有更簡單的方法嗎? –
John
更新了答案 – Tomer
謝謝,這似乎工作。最後一個問題,你將如何傳遞「@click」和「v-bind」之類的東西? – John