【发布时间】:2018-07-03 22:34:30
【问题描述】:
如何在 Vue.js 中将父模型绑定到子模型?
下面的这些代码可以正常工作。如果我手动填写输入,则子模型将其值返回给父模型。
但问题是,如果来自父级的 AJAX 请求的数据集,输入不会自动填充。
谁能帮我解决这个问题?
Form.vue
<template>
<form-input v-model="o.name" :fieldModel="o.name" @listenChanges="o.name = $event"/>
<form-input v-model="o.address" :fieldModel="o.address" @listenChanges="o.address = $event"/>
</template>
<script>
import FormInput from '../share/FormInput.vue'
export default {
data () {
return {
o: {
name: '',
address: ''
}
}
},
components: { 'form-input': FormInput },
created: function() {
axios.get('http://api.example.com')
.then(response => {
this.o.name = response.data.name
this.o.address = response.data.address
})
.catch(e => { console.log(e) })
}
}
</script>
FormInput.vue
<template>
<input type="text" v-model='fieldModelValue' @input="forceUpper($event, fieldModel)">
</template>
<script>
export default {
props: ['fieldModel'],
data() {
return {
fieldModelValue: ''
}
},
mounted: function() {
this.fieldModelValue = this.fieldModel;
},
methods: {
forceUpper(e, m) {
const start = e.target.selectionStart;
e.target.value = e.target.value.toUpperCase();
this.fieldModelValue = e.target.value.toUpperCase();
this.$emit('listenChanges', this.fieldModelValue)
}
}
}
</script>
【问题讨论】:
-
使用
v-bind而不是v-model -
在父模板中,绑定 Props=fieldModel。
-
@Ohgodwhy 我应该更改哪个 v-model?
-
@Sphinx 它实际上是绑定的,我已经更新了代码
-
还是不行?
标签: javascript vue.js vuejs2