国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

V-Modell funktioniert nicht mit <Komponente> in Vue 3?
P粉806834059
P粉806834059 2023-08-29 20:16:20
0
1
558
<p>為什么在下面的示例中 v-model 沒(méi)有綁定到我的輸入? <code><component></code> 有限制嗎?</p> <pre class="brush:php;toolbar:false;"><script setup> { ref } aus 'vue' importieren const config = ref({ überschriften: [ { Feld: 'id', Label: 'Id', Komponente: { Typ: 'Eingabe' } }, { Feld: 'Name', Beschriftung: 'Name', Komponente: { Typ: 'Eingabe' } }, // weitere Konfigurationen für Optionsfelder und andere benutzerdefinierte Komponenten ], Daten: [ { id: 1, name: 'foo' }, { id: 2, name: 'bar' } ] }) </script> <Vorlage> <Tabelle> <tr> <td v-for="header in config.headers"> <b>{{ header.label }}</b> </td> </tr> <tr v-for="item in config.data"> <td v-for="header in config.headers"> <component :is="header.component.type" v-model="item[header.field]" /> </td> </tr> </table> {{ config.data }} </template></pre></p>
P粉806834059
P粉806834059

Antworte allen(1)
P粉081360775

Vue v-model 對(duì)于原生元素來(lái)說(shuō)效果很好。

但它顯然無(wú)法與 一起使用

您的代碼生成

<input modelvalue="foo">

非??焖俚慕鉀Q方法是直接實(shí)現(xiàn)的綁定。

:value="item[header.field]" @input="item[header.field] = $event.target.value"

但是您將需要相應(yīng)地更新組件,以使用 value 而不是 modelValue。

更新

使用 v-model:value 的解決方法僅以一種方式起作用,與 :value 相同。

<component :is="header.component.type" v-model:value="item[header.field]" />

const { createApp, ref } = Vue

const config = ref({
  headers: [
    { field: 'id', label: 'Id', component: { type: 'input' } }, 
    { field: 'name', label: 'Name', component: { type: 'input' }  },
    // more configs for radio buttons and other custom components
  ],
  data: [
    { id: 1, name: 'foo' },
    { id: 2, name: 'bar' }
  ]
})

const App = {
  setup() {
    return { config, test: 1 }  
  }
}

const app = createApp(App)
app.mount('#app')
#app { line-height: 1.75; }
[v-cloak] { display: none; }
<div id="app">
<table>
    <tr>
      <td v-for="header in config.headers">
        <b>{{ header.label }}</b>
      </td>
    </tr>
    <tr v-for="item in config.data">
      <td v-for="header in config.headers">
        <component :is="header.component.type" :value="item[header.field]" @input="item[header.field] = $event.target.value" />
      </td>
    </tr>
  </table>
  {{ config.data }}
  <hr/>
  v-model test: <input v-model="test" />
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage