table动态改变
要实现的目标1.按增加按钮能能往store.js.state.people增加一个对象
2.按减少按钮能能往store.js.state.people减少一个对象
3.每次增加或者减少都能实时的表现在表格上
初始状态:
增加一个对象以后:
减少一个对象以后:
程序目录
介绍一下:
app.vue 初始页面
store.store.js里面是全局存放的数据
DrawTable.js 用来生成表格
需要安装的包
npm install jquery
npm install vuex
app.vue
<template>
<div class="body">
<p>this is a table-test vue</p>
<div style="display: flex;">
<input type="text" value="id" id="idd">
<input type="text" value="name" id="namee">
<button @click="btnHandler">增加按我</button>
<button @click="btnHandler02">减少按我</button>
</div>
<p></p>
<table>
<thead>
<th>id</th>
<th>name</th>
</thead>
<tbody class="data-show">
<!-- 展示数据 -->
</tbody>
</table>
</div>
</template>
<script>
import $ from 'jquery'
import {
Show
} from './components/DrawTable.js'
import {
mapState,
mapMutations
} from 'vuex'
export default {
computed: {
...mapState(['people'])
},
mounted() {
Show(this.people);
},
created() {
},
methods: {
...mapMutations(['addPeople','deletePeople']),
btnHandler() {
var obj = {
"id": $('#idd').val(),
"name": $('#namee').val()
}
this.addPeople(obj);
},
btnHandler02(){
this.deletePeople();
}
},
watch:{
'people':function(){
$(".data-show").empty();
Show(this.people);
}
}
}
</script>
<style>
.body {
width: 300px;
height: 300px;
background: #ffffff;
}
.body table {
border: 1px solid black;
width: 100%;
border-collapse: collapse;
text-align: center;
}
.body table th,
.body table td {
border: 1px solid black;
}
</style>
store.js
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export default new Vuex.Store({
state: {
people: [{
"id": 0,
"name":"A"
},
{
"id": 1,
"name":"B"
}
]
},
mutations: {
addPeople(state,obj){
state.people.push(obj);
},
deletePeople(state){
state.people.pop();
}
},
actions: {
},
getters: {
}
})
DrawTable.js
import $ from 'jquery'
function Show(people){
for(var j=0;j<people.length;j++){
var $trTemp=$("<tr></tr>");
$trTemp.append("<td>"+people[j].id+"</td>");
$trTemp.append("<td>"+people[j].name+"</td>");
$trTemp.appendTo(".data-show")
}
}
export{
Show
}