Vue.js实现可编辑的表格

本文实例为大家分享了Vue.js实现可编辑的表格的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html>
<head>
  <title></title>
  <link rel="stylesheet" type="text/css" href="bootstrap.min.css" rel="external nofollow" >
  <style type="text/css">
     table tr td{
      text-align: center;
     }
    .btn-info{
      margin-left: 5px;
    }

    .add,.addBox{
      margin: 10px 0px 10px 10px;
    }
    .submit{
      margin-left: 172px;
    }
    /*全删*/
    .delAll{
      margin-left: 10px;
    }
    /*新增*/
    fieldset{
      margin-left: 10px;
    }
  </style>
</head>
<body>

<div id="app">
<button class="btn btn-primary btn-sm addBox" @click="addBox">添加</button>
<button class="btn btn-sm btn-danger delAll" @click="delAll">批量删除</button>
 <table class="table table-bordered" >
 <thead>
  <tr>
    <td><input type="checkbox" @click="allSelect" v-model="checked"></td>
    <td>学号</td>
    <td>姓名</td>
    <td>年纪</td>
    <td>操作</td>

  </tr>
 </thead>
  <tbody>
   <tr v-for="person,index in people">
    <td><input type="checkbox" v-model="selected" v-bind:value="person.sid"></td>
    <td @click="edit(index)" contenteditable="true">{{person.sid}}</td>
    <td @click="edit(index)" contenteditable="true">{{person.sname}}</td>
    <td @click="edit(index)" contenteditable="true">{{person.sage}}</td>
    <td><button @click="del(index)" class="btn btn-danger btn-sm">删除</button><button @click="update(index)" class="btn btn-info btn-sm">编辑</button></td>
   </tr>
  </tbody>

 </table>

<fieldset v-show="seen" >
  <legend>新增用户</legend>
  <div class="">
  <p>
    <label>学号:</label>
    <input type="text" v-model="newPeople.sid">
  </p>
  <p>
    <label>姓名:</label>
    <input type="text" v-model="newPeople.sname">
  </p>
  <p>
    <label>年龄:</label>
    <input type="number" v-model="newPeople.sage">
  </p>
  <p>
    <button class="btn btn-success btn-sm submit" @click="add">提交</button>
  </p>
</div>

</fieldset>
<!-- 编辑界面 -->
<fieldset v-show="editSeen">
  <legend>编辑用户</legend>

<div class="">
  <p>
    <label>学号:</label>
    <input type="text" v-model="editPeople.sid" value="{{sid}}">
  </p>
  <p>
    <label>姓名:</label>
    <input type="text" v-model="editPeople.sname" value="{{sname}}">
  </p>
  <p>
    <label>年龄:</label>
    <input type="number" v-model="editPeople.sage" value="{{sage}}">
  </p>
  <p>
    <button class="btn btn-success btn-sm submit" @click="editSubmit">提交</button>
  </p>
</div>
</fieldset>
</div>

 <script type="text/javascript" src="vue.min.js"></script>
 <script type="text/javascript">
 var data ={
        people:[
          {'sid':'1043','sname':'张三','sage':18},
          {'sid':'2434','sname':'赵六','sage':43},
          {'sid':'3424','sname':'李四','sage':42},
          {'sid':'1231','sname':'王五','sage':35}
        ],
        newPeople:{
          'sid':'','sname':'','sage':''
        },
        seen:false,
        editSeen:false,
        checked:false,
        selected:[],
        editPeople:{
          'sid':'','sname':'','sage':''
        }

      } ;
   var app = new Vue({
    'el':'#app',
     data:data,

     methods:{
      // 添加
      addBox:function(){
        this.seen = this.seen == false ? true : false;
      },
      //删除
      del:function(index){
        console.log(11);
        this.people.splice(index,1);
      },
      //提交
      add:function(){
          //插入到people中
          this.people.push(this.newPeople);

          this.newPeople = {};
          this.seen = false
      },
      //全选
      allSelect:function(){
        if(this.selected.length != this.people.length){
          this.selected = [];
          for(var i = 0; i<this.people.length;i++){
            this.selected.push(this.people[i].sid);
            console.log(this.people[i].sid);

          }

        }else{
          this.selected = [];
        }

      },
      //批量删除
      delAll:function(){
        for(var j = 0; j< this.selected.length;j++){
          for(var i = 0; i< this.people.length; i++){
            if(this.selected[j] == this.people[i].sid){
              this.people.splice(i,1);
            }
          }
        }

      },
       //编辑
       update:function(index){
        this.editSeen = true;
         this.editPeople = this.people[index];

       },
       //编辑后提交
       editSubmit:function(){
        this.editSeen = false;

       }

     },
     watch:{
      "selected":function(){
        if(this.selected.length == this.people.length){
          this.checked = true;
        }else{
          this.checked = false;
        }
      }
     }
   })
 </script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • vue+element 模态框表格形式的可编辑表单实现

    要实现的效果如下,初始化的时候,不可编辑,点击编辑按钮,编辑按钮隐藏,取消编辑按钮显示;部分input输入框变为可编辑 <el-dialog title="营销单详情" width="920px" @close="isEdit = false" class="dialog dialogAdd" custom-class="custom-dialog" :visible.sync="dialo

  • vue+element实现表格新增、编辑、删除功能

    几天前,需要做一个需求:新增一个xml文件时,添加数量不确定.属性相同的xml标签,想了想可以用表格做啊,属性相同,使用统一的表头,下面的属性值只是进行增删改不就行了,就类似于mysql给表里填数据一样. 可是目前似乎还没有表格的直接增删改一行的操作,那要怎么实现呢?于是,通过上网以及自己的思考,终于实现了,代码.思路以及效果图如下: 1 html部分: <el-button type="success" @click="addRow(tableData)"&

  • Vue封装的可编辑表格插件方法

    可任意合并表头,实现单元格编辑. 页面效果如图: 页面使用如下: <template> <div> <v-table :datat = "tableData" :thlabel="thlabel" :isEdit="true"> </v-table> </div> </template> <script> export default{ data(){ retur

  • 对Vue table 动态表格td可编辑的方法详解

    项目中需求用到可编辑表格 下图这种 ↓ element UI 组件table表格中 增加template 模版 翻入input 根据业务逻辑增加全局变量 isEdit 是否变化. <el-table-column label="名称" width="140"> <template scope="scope"> <el-input v-if="scope.row.isEdit && scope

  • Vue+Element实现表格编辑、删除、以及新增行的最优方法

    之前已经实现了表格的新增.编辑和删除,在我的上篇文章中写的也比较详细.但是总感觉有点不完美,首先新增了一行以后,必须要双击某一个单元格参能进行内容的输入.从代码上来说,代码量也较大:而且使用的是原生的html标签,有点尴尬. 于是,进一步研以后,进行了一定的优化,直接使用vue的代码实现,不仅大大减少了代码量,还实现了操作的友好性.下面直接上代码: 1 html部分 这次的优化其实主要在于html部分,直接将vue的el-input标签或者el-select标签放入表格的每个单元格中.这样就不用

  • vue+element-ui实现表格编辑的三种实现方式

    1.表格内部显示和编辑切换 这种方式就是利用两个标签显示隐藏来实现,我们这里用input和span,正常用span将数据显示,点击编辑时,将span隐藏,显示input进行编辑.选中当前行我们可以通过slot-scope中的index去实现,在控制显示隐藏的属性上绑定index就可以选中当前行了,如showEdit[index]. 页面结构代码: <el-table :data="tableData" tooltip-effect="dark" style=&

  • vue+iview 实现可编辑表格的示例代码

    先简单说明一下,这个Demo引入的vue,iview的方式是标签引入的,没有用到webpack之类的构建工具... 毕竟公司还在用angularjs+jq. 这也是我第一次写文章,大家看看思路就行了,要是有大佬指点指点就更好了 话不多说,先来个效果图 我们再看下极为简单的目录结构 IViewEditTable ## vue+iview 实现的可编辑表格 └── index.html ## 首页 └── js └── editTable.js ## 首页JS └── ivew ## iview相关

  • VUE+Element UI实现简单的表格行内编辑效果的示例的代码

    原理是通过Css控制绑定的输入控件与显示值,在选中行样式下对控件进行隐藏或显示 效果示例地址 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <!-- 引入样式 --> <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-default/index.c

  • vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例

    如果是已经有点经验的同学,可以直接看下面这个函数,应该就能明白怎么回事,新手可以看下面的详细教程. 函数: handleEdit: function (index, row) { this.editFormVisible = true; this.editForm = Object.assign({}, row); } 详细教程: 1.首先,做一个表格,用于显示信息:代码如下: <el-table :data="users" highlight-current-row v-loa

  • Vue.js实现可编辑的表格

    本文实例为大家分享了Vue.js实现可编辑的表格的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head> <title></title> <link rel="stylesheet" type="text/css" href="bootstrap.min.css" rel="external nofollow" >

  • Vue.js实现可排序的表格组件功能示例

    本文实例讲述了Vue.js实现可排序的表格组件功能.分享给大家供大家参考,具体如下: 我们基于 Vue.js 实现一个可根据某列进行排序的表格组件. 一个表格包含表头和数据两部分内容.因此,我们定义两个数组,columns 表示表头信息,在 <thread> 中渲染,并可在此指定某一列是否需要排序:data 表示数据. html: <div id="app" v-cloak> <v-table :data="data" :columns

  • Vue.js仿Metronic高级表格(二)数据渲染

    上篇使用Vue.js制作仿Metronic高级表格(一)静态设计介绍了需求.原型设计以及静态页面实现,这篇讲解如何使用Vue渲染数据,实现动态展示. 表格数据 先定义一个数组来保存所有数据: var vm = new Vue({ el:'#content', data: { book_list: [ {id:1, name:"标准日本语", type: "文化", price:19.00, time: 1492502043}, {id:2, name:"微

  • Vue.js实现输入框绑定的实例代码

    实现效果如下: 实现代码及注释 <!DOCTYPE html> <html> <head> <title>vue.js数据动态编辑</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style type=

  • vue.js+Element实现表格里的增删改查

    新项目使用的是vue.js 后来发现饿了吗前端编写的一套框架Element (http://element.eleme.io/#/zh-CN)来配合vue.js进行样式填充 之前用过angularjs 用到后来 发现越来越难学 于是就决定用vue.js 下面就介绍一下vue.js应用在表格里的增删改查 首先引入一下element的js <script src="plugins/element-ui/index.js"></script> 然后引入需要用到的vue

  • 基于Vue.js的表格分页组件

    一.Vue.js简介 1.Vue的主要特点: (1) 简洁 (2) 轻量 (3)快速 (4) 数据驱动 (5) 模块友好 (6) 组件化 (1) 简洁 下面看一段Angular的实现双向绑定的代码 // html <body ng-app="myApp"> <div ng-controller="myCtrl"> <p>{{ note }}</p> <input type="text" ng-

  • vue.js表格分页示例

    分页一般和表格一起用,分页链接作为表格的一部分,将分页链接封装成一个独立的组件,然后作为子组件嵌入到表格组件中,这样比较合理. 效果: 代码: 1.注册一个组件 js Vue.component('pagination',{ template:'#paginationTpl', replace:true, props:['cur','all','pageNum'], methods:{ //页码点击事件 btnClick: function(index){ if(index != this.cu

  • vue.js表格组件开发的实例详解

    前言 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能.在有些情况下,组件也可以是原生 HTML 元素的形式,以 is 特性扩展. 组件开发的基础 组件可以扩展 HTML 元素,封装可重用的代码.我理解为功能模块的模板吧. 对于vue来说,组件是这个样子的,我们在html里面写 <div id="example"> <my-compone

  • Vue.js仿Metronic高级表格(一)静态设计

    Metronic高级表格是Metonic框架中自行实现的表格,其底层是Datatables,本教程将主要使用Vue实现交互部分,使用Bootstrap做样式库,jQuery做部分用户交互(弹窗). 使用到的库:Vue 2.0,Bootstrap3.jQuery2.font-awesome4,均可在CDN下载 需要注意的是,Vue最好使用开发版本 一.需求和原型设计 产品目标是一个图书管理表格,书籍字段:书籍名称.分类.价格.更新时间. 需求: ① 书籍信息的增删改 ② 分页功能,并且能自行选择页

随机推荐