반응형
Vue: v-model이 동적 구성 요소에서 작동하지 않음
예를 들어 다음과 같습니다.<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 컨트롤러:
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
기본 입력 요소가 될 것으로 예상합니다. :is
는 컴포넌트에 이름을 붙여야 합니다(필요한 경우 입력을 포함할 수 있습니다).
다음으로 컴포넌트에서의 동작을 이해할 필요가 있습니다.
컴포넌트가 동작하기 위해서는
v-model
, 다음과 같이 할 필요가 있습니다(이것들은 2.2.0+ 로 설정할 수 있습니다).
- 을 받아들이다
value
받침대- 을 방출하다.
input
새로운 가치를 가진 사건
이 모든 것을 종합하면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>
v-model
당신이 하려는 일과는 아무 상관이 없어요컴포넌트를 동적으로 삽입하려고 하는 것 같습니다.바로 그거야:is
컴포넌트에 데이터를 전달하려면props
.
예를 들어 다음과 같습니다.
Vue 인스턴스:
const vm = new Vue({
el: '#app',
data: {
exampleValue: 'This value will be passed to the example component'
}
})
구성 요소 등록:
Vue.component('example-component', {
// declare the props
props: ['value'],
template: '<span>{{ value}}</span>'
})
그런 다음 다음과 같이 사용합니다.
<example-component :value="exampleValue"></example-component>
또는 다음 중 하나를 선택합니다.
<component :is="'example-component'" :value="exampleValue"></component>
언급URL : https://stackoverflow.com/questions/44851978/vue-v-model-doesnt-work-with-dynamic-components
반응형
'programing' 카테고리의 다른 글
VueJ에서 상수를 사용하는 방법 (0) | 2022.08.10 |
---|---|
size of을 연산자로 간주하는 이유는 무엇입니까? (0) | 2022.08.10 |
View 구성 요소에서 Vuex 상태 초기화를 기다리는 방법 (0) | 2022.08.10 |
C 문자열 내의 문자의 인덱스를 찾으려면 어떻게 해야 합니까? (0) | 2022.08.10 |
exit() 함수 사용 (0) | 2022.08.10 |