Vue.js實(shí)現(xiàn)可編輯的表格
本文實(shí)例為大家分享了Vue.js實(shí)現(xiàn)可編輯的表格的具體代碼,供大家參考,具體內(nèi)容如下
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="bootstrap.min.css" >
<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>學(xué)號</td>
<td>姓名</td>
<td>年紀(jì)</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>學(xué)號:</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>學(xué)號:</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>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue.js 中取得后臺原生HTML字符串 原樣顯示問題的解決方法
這篇文章主要介紹了VUE.js 中取得后臺原生HTML字符串 原樣顯示問題 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06
vue中的任務(wù)隊(duì)列和異步更新策略(任務(wù)隊(duì)列,微任務(wù),宏任務(wù))
這篇文章主要介紹了vue中的任務(wù)隊(duì)列和異步更新策略(任務(wù)隊(duì)列,微任務(wù),宏任務(wù)),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
vue?eslint報(bào)錯(cuò)error?"Component?name?"*****"
這篇文章主要給大家介紹了關(guān)于vue?eslint報(bào)錯(cuò)error?“Component?name?“*****“?should?always?be?multi-word”的解決方法,文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09
Vue.js中用webpack合并打包多個(gè)組件并實(shí)現(xiàn)按需加載
對于現(xiàn)在前端插件的頻繁更新,我也是無力吐槽,但是既然入了前端的坑就得認(rèn)嘛,所以多多少少要對組件化有點(diǎn)了解,下面這篇文章主要給大家介紹了在Vue.js中用webpack合并打包多個(gè)組件并實(shí)現(xiàn)按需加載的相關(guān)資料,需要的朋友可以參考下。2017-02-02
vue項(xiàng)目中使用particles實(shí)現(xiàn)粒子背景效果及遇到的坑(按鈕沒有點(diǎn)擊響應(yīng))
為了提高頁面展示效果,登錄界面內(nèi)容比較單一的,粒子效果作為背景經(jīng)常使用到,vue工程中利用vue-particles可以很簡單的實(shí)現(xiàn)頁面的粒子背景效果,本文給大家分享在實(shí)現(xiàn)過程中遇到問題,需要的朋友一起看看吧2020-02-02
vue循環(huán)中點(diǎn)擊選中再點(diǎn)擊取消(單選)的實(shí)現(xiàn)
這篇文章主要介紹了vue循環(huán)中點(diǎn)擊選中再點(diǎn)擊取消(單選)的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09

