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的操作

完美显示~~

Logo

前往低代码交流专区

更多推荐