01-数组的变异方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="js/vue.js"></script>
</head>
<body>
<div id="app">
<li v-for="(item,index) in arr" :key="index">{{item}}</li>
</div>
</body>
<script>
new Vue({
el: "#app",
data: {
arr: [11, 22, 33, 44, 55, 66]
},
mounted() {
console.log(this.arr);
this.arr[0] = "你好";
this.$set(this.arr, 0, "hello");
this.arr.splice(1, 1, "来了");
this.arr = ["你好", "来了", "暴力修改", 44, 55, 66];
}
})
</script>
</html>
02-修改对象数据
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="js/vue.js"></script>
</head>
<body>
<div id="app">
<h2>{{obj.username}}</h2>
<h2>{{obj.age}}</h2>
<h2>{{obj.sex}}</h2>
<button @click="changeAge()">修改年龄</button>
</div>
</body>
<script>
new Vue({
el: "#app",
data: {
obj: {
username: "二哥"
}
},
mounted() {
this.obj.username = "二哥你好";
},
methods: {
changeAge() {
this.obj.age = 18;
this.obj.username = "二哥二哥";
this.$set(this.obj, "sex", "男");
}
}
})
</script>
</html>
03-后台案例(全选+排序)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<script src="js/jquery-3.6.0.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/vue.js"></script>
<style>
.table {
margin: 20px 0px;
}
</style>
</head>
<body>
<div id="app">
<div class="container">
<div style="margin: 10px 0px;">
<button class="btn btn-primary" @click="addUserFn">添加</button>
<button class="btn btn-danger" @click="delAll()">批量删除</button>
</div>
<table class="table table-bordered text-center">
<tr>
<td><input type="checkbox" v-model="checkAll" @click="selectAllFn()">全选</td>
<td v-for="(item,index) in thead" :key="item.id">{{item.title}}
<a href="" @click.prevent="sortAsc(index)">升序</a>
<a href="" @click.prevent="sortDesc(index)">降序</a>
</td>
<td>操作</td>
</tr>
<tr v-for="(userlist,index) in userlists" :key="index">
<td><input type="checkbox" @click="userSelect(index)" v-model="userlist.usercheck"></td>
<td>{{userlist.sNo}}</td>
<td>{{userlist.username}}</td>
<td>{{userlist.age}}</td>
<td>
<button class="btn btn-danger" @click="delUser(index)">删除</button>
<button class="btn btn-primary" @click="editUserFn(index)">编辑</button>
</td>
</tr>
</table>
<fieldset v-show="addshow">
<legend>添加用户</legend>
<div class="form-group">
<p>
<label for="">学号</label>
<input type="text" class="form-control" v-model="addUser.sNo">
</p>
</div>
<div class="form-group">
<p>
<label for="">姓名</label>
<input type="text" class="form-control" v-model="addUser.username">
</p>
</div>
<div class="form-group">
<p>
<label for="">年龄</label>
<input type="text" class="form-control" v-model="addUser.age">
</p>
</div>
<div class="form-group">
<p>
<button class="btn btn-primary btn-block" @click="addUserOk()">添加</button>
</p>
</div>
</fieldset>
<fieldset v-show="editshow">
<legend>编辑用户</legend>
<div class="form-group">
<p>
<label for="">学号</label>
<input type="text" class="form-control" v-model="editUser.sNo">
</p>
</div>
<div class="form-group">
<p>
<label for="">姓名</label>
<input type="text" class="form-control" v-model="editUser.username">
</p>
</div>
<div class="form-group">
<p>
<label for="">年龄</label>
<input type="text" class="form-control" v-model="editUser.age">
</p>
</div>
<div class="form-group">
<p>
<button class="btn btn-primary btn-block" @click="editUserOk()">修改</button>
</p>
</div>
</fieldset>
</div>
</div>
</body>
<script>
new Vue({
el: "#app",
data: {
checkAll: false,
addUser: {
id: new Date(),
sNo: "",
username: "",
age: "",
usercheck: false
},
editUser: {
id: new Date(),
sNo: "",
username: "",
age: "",
usercheck: false
},
addshow: false,
editshow: false,
thead: [
{ id: 01, title: "学号11", sort: "sNo" },
{ id: 02, title: "姓名", sort: "username" },
{ id: 03, title: "年龄", sort: "age" }
],
userlists: [
{ id: 01, sNo: 1005, username: "兄弟", age: 18, usercheck: false },
{ id: 02, sNo: 1003, username: "姐妹", age: 30, usercheck: false },
{ id: 03, sNo: 1008, username: "好家伙", age: 25, usercheck: false }
]
},
methods: {
addUserFn() {
this.addshow = true;
this.editshow = false;
},
editUserFn(index) {
this.editshow = true;
this.addshow = false;
this.editUser = this.userlists[index];
},
addUserOk() {
this.userlists.push(this.addUser);
this.addshow = false;
this.addUser = {
id: "",
sNo: "",
username: "",
age: ""
}
},
editUserOk() {
this.editshow = false;
},
delUser(index) {
this.userlists.splice(index, 1);
},
userSelect(index) {
console.log(index);
this.userlists[index].usercheck = !this.userlists[index].usercheck;
this.checkAll = this.userlists.every((item) => {
return item.usercheck == true;
})
},
selectAllFn() {
this.checkAll = !this.checkAll;
this.userlists.forEach((item) => {
item.usercheck = this.checkAll;
})
},
delAll() {
for (let i = 0; i < this.userlists.length; i++) {
if (this.userlists[i].usercheck) {
this.userlists.splice(i, 1);
i--;
console.log(i);
}
}
},
sortAsc(index) {
this.sortFn(index, "asc");
},
sortDesc(index) {
this.sortFn(index, "desc");
},
sortFn(index, sort) {
var userSortFn = null;
console.log(this.thead[index].sort);
var sortStr = this.thead[index].sort;
switch (sort) {
case "asc":
console.log("点击了升序按钮");
userSortFn = function(a, b) {
return a[sortStr] > b[sortStr] ? 1 : -1;
}
break;
case "desc":
console.log("点击了降序按钮");
userSortFn = function(a, b) {
return a[sortStr] < b[sortStr] ? 1 : -1;
}
break;
}
this.userlists.sort(userSortFn);
}
}
})
</script>
</html>