gpt4 book ai didi

javascript - 视觉 : v-model doesn't work with dynamic components

转载 作者:搜寻专家 更新时间:2023-10-30 22:14:48 25 4
gpt4 key购买 nike

例如:<component v-model='foo' :is='boo' ...> .

foo的值在输入期间保持不变。

我尝试解决这个问题已经很长时间了。我检查了很多问题和主题,但没有一个对我有帮助。

HTML 无效:

            <component
:is="field.component"
:key="key"
:name="field.name"
v-for="(field, key) in integration_data"
v-model="field.value"
>
</component>

HTML 工作正常:

            <input
:key="key"
:name="field.name"
v-for="(field, key) in integration_data"
v-model="field.value"
>

Vue Controller :

export default {
init: function (init_data) {

return new Vue({
data: {
integration_data: [
{name: 'field_name0', component: 'input', value: ''},
{name: 'field_name0', component: 'input', value: ''},
]
},
});
}
}

最佳答案

您不能将 input 用作一种组件并期望它是 native 输入元素。 :is 必须命名一个组件(如果需要,它可以包含一个输入)。

那你得明白how v-model works on components :

So for a component to work with v-model, it should (these can beconfigured in 2.2.0+):

  • accept a value prop
  • emit an input event with the new value

综上所述,您可以将 v-model:is 一起使用。

new Vue({
el: '#app',
data: {
integration_data: [{
name: 'one',
component: 'one',
value: 'ok'
}]
},
components: {
one: {
props: ['name', 'value'],
template: '<div>{{name}} and <input v-model="proxyValue"><slot></slot></div>',
computed: {
proxyValue: {
get() { return this.value; },
set(newValue) { this.$emit('input', newValue); }
}
}
}
}
});
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.3.4/vue.min.js"></script>
<div id="app">
<component
:is="field.component"
v-for="(field, key) in integration_data"
:key="key"
:name="field.name"
v-model="field.value"
>
<div>{{field.value}}</div>
</component>
</div>

关于javascript - 视觉 : v-model doesn't work with dynamic components,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44851978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com