gpt4 book ai didi

javascript - 如何在 VueJS 中动态创建输入字段

转载 作者:行者123 更新时间:2023-12-02 23:18:22 25 4
gpt4 key购买 nike

我正在尝试动态添加或删除移动输入字段。

我从这里得到了一个简单的解决方案 https://smarttutorials.net/dynamically-add-or-remove-input-textbox-using-vuejs/ ,有效。但是,将输入值保存在数据库中会停止其功能。

组件代码:

<div class="form-group" v-for="(input,k) in inputs" :key="k">
<input type="text" class="form-control" v-model="input.name" />
<input type="text" class="form-control" v-model="input.party" />
<span>
<i
class="fas fa-minus-circle"
@click="remove(k)"
v-show="k || ( !k && inputs.length > 1)"
></i>
<i
class="fas fa-plus-circle"
@click="add(k)"
v-show="k == inputs.length-1"
></i>
</span>
</div>
<button @click="addCandidate">
Submit
</button>

<script>
export default {
data() {
return {
inputs: [
{
name: "",
party: ""
}
]
};
},
methods: {
add(index) {
this.inputs.push({ name: "", party: "" });
},
remove(index) {
this.inputs.splice(index, 1);
},
addCandidate() {
axios
.post("/candidates", this.inputs)
.then(response => {})
.catch(error => {});
}
}
};
</script>

我总是收到 422 错误,表示输入字段为空。

最佳答案

这不是 Vue 问题。在发送数组之前,您需要对其调用 JSON.stringify() ,然后使用 Laravel 在服务器上对其进行解码。示例:

foreach(json_decode($request -> input('my_prop_name ')) as $my_object_in_array)
{
print_r($my_object_in_array); // this is your object name/party
}

Vue 代码就像魔法一样工作。 :)

new Vue({
el: '#app',

data () {
return {
inputs: [{
name: '',
party: ''
}]
}
},

methods: {
add () {
this.inputs.push({
name: '',
party: ''
})
console.log(this.inputs)
},

remove (index) {
this.inputs.splice(index, 1)
},

addCandidate () {
axios
.post('/candidates', {
my_prop_name: JSON.stringify(this.inputs)
})
.then(response => {})
.catch(error => {})
}
}
})
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id=app>
<div class="form-group" v-for="(input,k) in inputs" :key="k">
<input type="text" class="form-control" v-model="input.name">
<input type="text" class="form-control" v-model="input.party">
<span>
<i class="fas fa-minus-circle" @click="remove(k)" v-show="k || ( !k && inputs.length > 1)">Remove</i>
<i class="fas fa-plus-circle" @click="add(k)" v-show="k == inputs.length-1">Add fields</i>
</span>
</div>
<button @click="addCandidate">
Submit
</button>
</div>

关于javascript - 如何在 VueJS 中动态创建输入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57061964/

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