写bug小白 2023-04-18 17:17 采纳率: 95.5%
浏览 52
已结题

如何实现el-tabs标签页的可编辑功能

如何实现el-tabs标签页的可编辑功能?

目标是实现el-tabs标签页的标题可以修改;

目前我的思路是给el-tab-pane元素添加一个input输入框,点击时触发选择框,鼠标移开时保存输入文字,但不知道代码该如何写;点击保存后如何把修改后的标题渲染到页面上

这是我已有的代码,展示了el-tabs标签页

框架语言是vue+JS,使用了Element组件库;
tableList是要渲染的内容数组,格式如下:

tableList:[
  {  
    name:'title1',
    content:[
        {  
            name:'title1',
            value: 1                 
        },{  
            name:'title1',
            value: 1                 
        },{  
            name:'title1',
            value: 1                 
        }
      },
       {  
    name:'title2',
    content:[
        {  
            name:'title2',
            value: 2                 
        },{  
            name:'title2',
            value: 2                
        },{  
            name:'title2',
            value: 2               
        }
      }
    ]
]

代码

<el-tabs type="card" v-model="defaultValue" :before-leave="beforeLeave" closable  @tab-remove="removeTab">
      <el-tab-pane v-for="item in tableList" :name="item.name" :label="item.name">
        { item.name}}
          <el-input v-else v-model="item.name" :placeholder="'原标题名'+'--'+`${item.name}`"></el-input>    
          
         -->
        <span slot="label" :contenteditable="contenteditable">
          {{ item.name }}
          <el-button type="text" v-on:click="handleEdit"><i :class="contenteditable ? 'el-icon-check' : 'el-icon-edit'" ></i></el-button>
        </span>
        <el-row :gutter="20">
          <vuedraggable
            v-model="item.value"
            handle=".dargBtn"
            @end="end"
            :move="onMove"
            :options="{animation:800}"
          >
          <el-col :span="6" 
            v-for="obj in item.content" 
            :key="obj.id"
            class="preViewCard">
            <el-card :body-style="{ padding: '0px' }">
              <div class="preViewDiv dargBtn">
                <div class="demo-image__preview">
                   <span>{{obj.value}}</span>
                </div>
            
                <el-button-group class="button" v-if="isEdit">
                  <el-button
                    size="mini"
                    type="primary"
                    icon="el-icon-edit"
                    style="width: 50%"
                    @click="handleUpdate(obj)"
                  ></el-button>
                  <el-button
                    size="mini"
                    type="danger"
                    style="width: 50%"
                    icon="el-icon-delete"
                    @click="handleDelete(obj)"
                  ></el-button>
                </el-button-group>
              </div>
            </el-card>
          </el-col>
        </vuedraggable>
        </el-row>
      </el-tab-pane>
    </el-tabs>


  • 写回答

2条回答 默认 最新

  • 乘风xs 2023-04-18 17:48
    关注

    你的思路很正确,在handleEdit切换显示input, 然后给input绑定一个onblur事件,在onblur事件的回调中,切换显示tab标题,并把input的值保存在tabList的相应的元素的name上面去

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月27日
  • 已采纳回答 4月19日
  • 创建了问题 4月18日

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备