ui框架 bootstrap
https://v3.bootcss.com/getting-started/
class内部绑定了css样式表,不要去修改class
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script>
</head>
<body>
<div id="app">
<form class="form-horizontal">
<div class="form-group form-group-lg">
<label class="col-sm-2 control-label" for="formGroupInputLarge">用户名:</label>
<div class="col-sm-10">
<input class="form-control" type="text" id="formGroupInputLarge" placeholder="username" v-model="username" />
</div>
</div>
<div class="form-group form-group-lg">
<label class="col-sm-2 control-label" for="formGroupInputLarge">年龄:</label>
<div class="col-sm-10">
<input class="form-control" type="text" id="formGroupInputLarge" placeholder="age" v-model="age" />
</div>
</div>
<div class="form-group form-group-lg">
<label class="col-sm-2 control-label" for="formGroupInputLarge">爱好:</label>
<div class="col-sm-10">
<input class="form-control" type="text" id="formGroupInputLarge" placeholder="hobby" v-model="hobby" />
</div>
</div>
</form>
<button type="button" class="btn btn-primary btn-lg btn-block" @click="updata">添加信息</button>
<hr>
<table class="table table-striped">
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>爱好</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr v-for="(p,index) in stuData" :key="index">
<td>{{p.name}}</td>
<td>{{p.nianling}}</td>
<td>{{p.aihao}}</td>
<td><button type="button" class="btn btn-danger" @click="delp(index)">删除</button></td>
</tr>
</tbody>
</table>
</div>
<script>
new Vue({
el : "#app",
data: {
stuData: [],
username: "",
age: "",
hobby: "",
},
methods: {
updata (){
this.stuData.push({name:this.username, nianling:this.age, aihao:this.hobby}),
console.log(this.$data),
this.username="",
this.age="",
this.hobby="",
console.log("添加成功")
},
delp (index){
this.stuData.splice(index,1),
console.log("删除成功")
}
}
})
</script>
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
Launch demo modal
</button>
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
</body>
</html>
图标的使用
弹窗的使用
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script>
</head>
<body>
<div id="app">
<form class="form-horizontal">
<div class="form-group form-group-lg">
<label class="col-sm-2 control-label" for="formGroupInputLarge">用户名:</label>
<div class="col-sm-10">
<input class="form-control" type="text" id="formGroupInputLarge" placeholder="username" v-model="username" />
</div>
</div>
<div class="form-group form-group-lg">
<label class="col-sm-2 control-label" for="formGroupInputLarge">年龄:</label>
<div class="col-sm-10">
<input class="form-control" type="text" id="formGroupInputLarge" placeholder="age" v-model="age" />
</div>
</div>
<div class="form-group form-group-lg">
<label class="col-sm-2 control-label" for="formGroupInputLarge">爱好:</label>
<div class="col-sm-10">
<input class="form-control" type="text" id="formGroupInputLarge" placeholder="hobby" v-model="hobby" />
</div>
</div>
</form>
<button type="button" class="btn btn-primary btn-lg btn-block" @click="updata">添加信息</button>
<hr>
<table class="table table-striped">
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>爱好</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr v-for="(p,index) in stuData" :key="index">
<td>{{p.name}}</td>
<td>{{p.nianling}}</td>
<td>{{p.aihao}}</td>
<td><button type="button" class="btn btn-danger" @click="delp(index)">删除</button></td>
</tr>
</tbody>
</table>
</div>
<script>
new Vue({
el : "#app",
data: {
stuData: [],
username: "",
age: "",
hobby: "",
},
methods: {
updata (){
this.stuData.push({name:this.username, nianling:this.age, aihao:this.hobby}),
console.log(this.$data),
this.username="",
this.age="",
this.hobby="",
console.log("添加成功")
},
delp (index){
this.stuData.splice(index,1),
console.log("删除成功")
}
}
})
</script>
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
Launch demo modal
</button>
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
</body>
</html>
模态框
模态框的绑定
用模态框删除
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script>
</head>
<body>
<div id="app">
<form class="form-horizontal">
<div class="form-group form-group-lg">
<label class="col-sm-2 control-label" for="formGroupInputLarge">用户名:</label>
<div class="col-sm-10">
<input class="form-control" type="text" id="formGroupInputLarge" v-model="username" >
</div>
</div>
<div class="form-group form-group-lg">
<label class="col-sm-2 control-label" for="formGroupInputLarge">年龄:</label>
<div class="col-sm-10">
<input class="form-control" type="text" id="formGroupInputLarge" v-model="userage" >
</div>
</div>
<div class="form-group form-group-lg">
<label class="col-sm-2 control-label" for="formGroupInputLarge">爱好:</label>
<div class="col-sm-10">
<input class="form-control" type="text" id="formGroupInputLarge" v-model="hobby">
</div>
</div>
<button type="button" class="btn btn-primary" @click="updata"><span class="glyphicon glyphicon-plus"></span>添加</button>
</form>
<hr>
<table class="table table-striped">
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>爱好</th>
</tr>
</thead>
<tbody>
<tr v-for="(p, index) in stuData" :key="index">
<td>{{p.name}}</td>
<td>{{p.age}}</td>
<td>{{p.hobby}}</td>
<td><button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal" @click="nowindex=index">删除</button></td>
</tr>
</tbody>
</table>
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">确认删除?</h4>
</div>
<div class="modal-body">
确认删除这个学生信息吗?
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" @click="delp(nowindex)" >ok</button>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
new Vue({
el:"#app",
data: {
stuData:[],
username:"",
userage:"",
hobby:"",
nowindex:-100
},
methods: {
updata() {
this.stuData.push({
name:this.username,
age:this.userage,
hobby:this.hobby
})
console.log(this.stuData)
this.username=""
this.userage=""
this.hobby=""
},
delp(index) {
console.log(index)
this.stuData.splice(index,1)
}
}
})
</script>
</body>
</html>
vue属性
计算属性computed 监听属性watch
单向数据绑定
computed实现
vue生命周期
vue的声明周期共有八个阶段,分别是:1、实例创建前;2、实例创建后;3、实例载入前;4、实例载入后;5、实例更新前;6、实例更新后;7、实例销毁前;8、实例销毁后。
对应八大钩子函数