1.发现问题:
由于业务需要,需要做一个demo,展示数据,考虑到vue比较容易搭建,因此选择了vue开发;最基本的表格跟表单页面,前期没有什么问题,在写表单项的时候有一个输入框需要用到动态增加表单项,代码如下:
<div class="leftdiv" >
<el-form-item
v-for="(item, index) in dataForm.dynamicItem"
:key="item.key"
:label="'输入参数:'"
prop="inputParameter"
>
<el-input v-model="item.inputParameter" @input="newinput1"></el-input>
<i class="el-icon-delete" @click="deleteItem(item, index)"></i>
<i class="el-icon-circle-plus-outline" circle @click="newinput"></i>
</el-form-item>
</div>
data() {
return {
dataForm: {
... ,
dynamicItem: [{ inputParameter: "" }]
},
按照element文档写的,不得不给element的开发人员赞一个,文档实在是详细 ~!
有一个编辑的功能是需要表格跳转表单的,看到详细的数据;
getInfoById(params).then(res => {
if (res.status == 200) {
this.dataForm = res.data; //赋值
this.dataForm.dynamicItem = []; // 初始化添加数组 因为res中没有,会吧dataForm里面重置掉。
if (
this.dataForm.inputParameter != "" &&
this.dataForm.inputParameter.indexOf("&") !== -1
) {
var arr = this.dataForm.inputParameter.split("&");
for (let key in arr) {
let rf = {
inputParameter: arr[key],
key: Date.now() + Math.ceil(Math.random() * 100)
};
this.dataForm.dynamicItem = [...this.dataForm.dynamicItem, rf]; //处理之后赋值
}
}
});
此时我发现我的表单是能显示输入参数的具体信息的,但是我在输入框中进行输入的话并不能显示,按增加和删除也没有改变;但是我再点一下其他的输入框就能够显示我刚刚的操作,数据也在输入框中;
输入之后还是空白,点其他输入框才能显示;
2.解决问题
什么原因我现在还不知道,像是没有绑定到一样;非常希望有大佬能告知一下原因;
我的解决办法是在 div 增加v-if判断
<div class="leftdiv" v-if="isShow">
<el-form-item
v-for="(item, index) in dataForm.dynamicItem"
:key="item.key"
:label="'输入参数:'"
prop="inputParameter"
>
<el-input v-model="item.inputParameter" @input="newinput1"></el-input>
<i class="el-icon-delete" @click="deleteItem(item, index)"></i>
<i class="el-icon-circle-plus-outline" circle @click="newinput"></i>
</el-form-item>
</div>
绑定一个isShow进行判断,然后输入框@input方法中进行对isShow的修改
newinput1(){
this.isShow = false;
this.number +=1;
this.isShow = true;
},
输出就能显示了,但是添加表单项跟删除还是有问题,复制粘贴走起,在对应的方法也进行isShow的操作
完美显示~~