vue2复习
v-for语句
<!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="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
</head>
<body>
<div id="app">
<!-- in 后面可以跟普通数组、对象数组、对象、数字 -->
<!-- 使用v-for去迭代数字,从1开始,python当中从0开始 -->
<p v-for="count in 10">这是第{{count}}</p>
</div>
<script>
new Vue({
el:'#app',
data:{}
})
</script>
</body>
</html>
遍历对象
<!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="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
</head>
<body>
<div id="app">
<!-- in 后面可以跟普通数组、对象数组、对象、数字 -->
<!-- 使用v-for去迭代数字,从1开始,python当中从0开始 -->
<!-- <p v-for="count in 10">这是第{{count}}次循环</p> -->
<p v-for='info in user'>{{info}}</p>
</div>
<script>
new Vue({
el:'#app',
data:{
user:{
id:1,
name:'holy',
gender:"男"
}
}
})
</script>
</body>
</html>
val,key形式
<!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="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
</head>
<body>
<div id="app">
<!-- in 后面可以跟普通数组、对象数组、对象、数字 -->
<!-- 使用v-for去迭代数字,从1开始,python当中从0开始 -->
<!-- <p v-for="count in 10">这是第{{count}}次循环</p> -->
<!-- 遍历对象 直接遍历值 -->
<p v-for='val,key in user'>值:{{val}},键是{{key}}</p>
</div>
<script>
new Vue({
el:'#app',
data:{
user:{
id:1,
name:'holy',
gender:"男"
}
}
})
</script>
</body>
</html>
添加索引
<!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="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
</head>
<body>
<div id="app">
<!-- in 后面可以跟普通数组、对象数组、对象、数字 -->
<!-- 使用v-for去迭代数字,从1开始,python当中从0开始 -->
<!-- <p v-for="count in 10">这是第{{count}}次循环</p> -->
<!-- 遍历对象 直接遍历值 如果获取值和键,是值和键-->
<p v-for='val,key,i in user'>值:{{val}},键是{{key}},索引是{{i}}</p>
</div>
<script>
new Vue({
el:'#app',
data:{
user:{
id:1,
name:'holy',
gender:"男"
}
}
})
</script>
</body>
</html>
遍历数组
案例
引入样式
选择样式复制
<!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="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
<div id="app">
<!-- in 后面可以跟普通数组、对象数组、对象、数字 -->
<!-- 使用v-for去迭代数字,从1开始,python当中从0开始 -->
<!-- <p v-for="count in 10">这是第{{count}}次循环</p> -->
<!-- 遍历对象 直接遍历值 如果获取值和键,是值和键 索引默认0开始-->
<!-- <p v-for='val,key,i in user'>值:{{val}},键是{{key}},索引是{{i}}</p> -->
<!-- 遍历数组 -->
<!-- <p v-for='user in li'>{{user.name}}</p> -->
<table class="table table-bordered">
<tr>
<td>#</td>
<td>name</td>
<td>hobby</td>
</tr>
<tr>
<td>1</td>
<td>xi</td>
<td>python</td>
</tr>
<tr>
<td>2</td>
<td>ab</td>
<td>play</td>
</tr>
<tr>
<td>3</td>
<td>ha</td>
<td>java</td>
</tr>
</table>
</div>
<script>
new Vue({
el:'#app',
data:{
user:{
id:1,
name:'holy',
gender:"男"
},
li:[
{id:1,name:'sun'},
{id:2,name:'rain'},
{id:3,name:'cloudy'},
]
}
})
</script>
</body>
</html>
for循环实现
<!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="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
<div id="app">
<!-- in 后面可以跟普通数组、对象数组、对象、数字 -->
<!-- 使用v-for去迭代数字,从1开始,python当中从0开始 -->
<!-- <p v-for="count in 10">这是第{{count}}次循环</p> -->
<!-- 遍历对象 直接遍历值 如果获取值和键,是值和键 索引默认0开始-->
<!-- <p v-for='val,key,i in user'>值:{{val}},键是{{key}},索引是{{i}}</p> -->
<!-- 遍历数组 -->
<!-- <p v-for='user in li'>{{user.name}}</p> -->
<table class="table table-bordered">
<!-- 表头不能动 -->
<th>
<td>name</td>
<td>hobby</td>
</th>
<tr v-for="info in li_2">
<td>{{info.id}}</td>
<td>{{info.name}}</td>
<td>{{info.hobby}}</td>
</tr>
</table>
</div>
<script>
new Vue({
el:'#app',
data:{
user:{
id:1,
name:'holy',
gender:"男"
},
li:[
{id:1,name:'sun'},
{id:2,name:'rain'},
{id:3,name:'cloudy'},
],
li_2:[
{id:1,name:'sun',hobby:'python'},
{id:2,name:'rain',hobby:'java'},
{id:3,name:'cloudy',hobby:'play'}
]
}
})
</script>
</body>
</html>
直接在data后面加数据不用改for循环也可以显示
v-for状态保持
<!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="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
<div id="app">
<div v-for='book in books'>
<span>{{book}}</span>
</div>
</div>
<script>
new Vue({
el:'#app',
data:{
books:["python数据分析",'python核心编程']
}
})
</script>
</body>
</html>
使输入框显示书本名字——v-bind
<!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="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
<div id="app">
<div v-for='book in books'>
<span>{{book}}</span>
<input type="text" v-bind:placeholder='book'>
</div>
<button @click='ChangeBooks'>
点击排序
</button>
</div>
<script>
new Vue({
el:'#app',
data:{
books:["python数据分析",'python核心编程','西瓜书']
},
methods:{
ChangeBooks(){
// key排序规则——方法
this.books.sort(function(a,b){
console.log(a,b)
})
}
}
})
</script>
</body>
</html>
使其随机排序 Math.random()
取整数——parseInt
<!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="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
<div id="app">
<!-- 注意:key指定的值必须为字符串或者整数,不能是数组和对象 -->
<div v-for='book in books' v-bind:key='book'>
<span>{{book}}</span>
<input type="text" v-bind:placeholder='book'>
</div>
<button @click='ChangeBooks'>
点击排序
</button>
</div>
<script>
new Vue({
el:'#app',
data:{
books:["python",'java','c']
},
methods:{
ChangeBooks(){
// key排序规则——方法
this.books.sort(function(a,b){
// 两两传入进行比较
// console.log(a,b)
// 随机排序0-1
// 转为整数
return 4-parseInt(Math.random()*10)
})
}
}
})
</script>
</body>
</html>
修改数组修改数组元素——Vue.set(数组,下标,新数据)
<!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="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
<div id="app">
<div v-for='book in books' v-bind:key='book'>
<span>{{book}}</span>
</div>
<button @click='updateList'>更新数组</button>
</div>
<script>
new Vue({
el:'#app',
data:{
books:["python",'java','c']
},
methods:{
updateList:function(){
// 将python修改为php 首先获取索引
// console.log(this.books[0])
// 修改数组元素——Vue.set(数组,下标,新数据)
Vue.set(this.books,0,'PHP')
}
}
})
</script>
</body>
</html>
往数组尾部添加数据——数组.push()
往数组头部添加数据——数组.unshift()
往数组尾部删除数据——数组.pop()
往数组尾部删除数据——数组.shift()
数组添加 修改 删除都可以——splice()
增加:
替换和增加:
删除:——当下标为-1时为最后一个元素
改变对象
<!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="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
<div id="app">
<div v-for='book in books' v-bind:key='book'>
<span>{{book}}</span>
</div>
<button @click='updateList'>更新数组</button>
<ul>
<li v-for='info in user'>{{info}}</li>
</ul>
<button @click='updateObject'>更新对象</button>
</div>
<script>
new Vue({
el:'#app',
data:{
books:["python",'java','c'],
user:{
'name':'engine'
}
},
methods:{
updateList:function(){
// 将python修改为php 首先获取索引
// console.log(this.books[0])
// 修改数组元素——Vue.set(数组,下标,新数据)
// Vue.set(this.books,0,'PHP')
// 往数组尾部添加数据
// this.books.push('GO')
// 往数组头部添加数据
// this.books.unshift('c++')
// 从数组末尾开始删除
// this.books.pop()
// 从数组头部开始删
// this.books.shift()
// splice -添加 删除 修改都可以 splice
// this.books.splice(起始位置,选中几个元素,值)
// 从下标为0开始,0个元素,就是添加
// this.books.splice(0,0,'R')
// 替换
// this.books.splice(0,1,'GO','php')
// 将两个元素都替换成Go 选中元素变为2
// this.books.splice(0,2,'GO','Go')
// 删除
// this.books.splice(0,1)
},
updateObject:function(){
// 将engine改为han
// this.user.name='han'
// 添加属性 同数组
Vue.set(this.user,'age','18')
}
}
})
</script>
</body>
</html>
event参数
<!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="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
</head>
<body>
<div id="app">
<button name='btn' @click='sub(3)'>单击</button>
<a href="https://www.baidu.com/">百度一下</a>
</div>
<script>
new Vue({
el:'#app',
data:{
},
methods:{
sub:function(value){
console.log(value)
}
}
})
</script>
</body>
</html>
<!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="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
</head>
<body>
<div id="app">
<button name='btn' @click='sub(3,$event)'>单击</button>
<a href="https://www.baidu.com/">百度一下</a>
</div>
<script>
new Vue({
el:'#app',
data:{
},
methods:{
sub:function(value){
// value是形参,调用时传入的参数
console.log(value)
// 想要获取原生DOM元素属性
console.log(event)
}
}
})
</script>
</body>
快速获取name原生态DOM属性:
阻止默认跳转并重定向
简易计算器
<!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="https://cdn.jsdelivr.net/npm/vue"></script>
</head>
<body>
<div id="box">
<input type="text">
<!-- +-*/下拉框 -->
<select name="" id="">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type="text">
<input type="button" value='='>
<input type="text">
</div>
</body>
</html>
<!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="https://cdn.jsdelivr.net/npm/vue"></script>
</head>
<body>
<div id="box">
<!--
1.输入v1 v2 option 结果result
2.点击等号按钮运算
-->
<input type="text" v-model:value='v1'>
<!-- +-*/下拉框 -->
<select name="" id="" v-model:value='opt'>
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type="text" v-model:value='v2'>
<input type="button" value='=' @click='calcu'>
<input type="text" v-model:value='result'>
</div>
<script>
new Vue({
el:'#box',
data:{
v1:0,
v2:0,
opt:'+',
result:0
},
methods:{
calcu:function(){
switch(this.opt){
case'+':
// 加法运算 将字符串转为int
this.result =parseInt(this.v1) +parseInt(this.v2)
break
case'-':
// 减法
this.result =parseInt(this.v1) - parseInt(this.v2)
break
case'*':
// 乘法运算
this.result =parseInt(this.v1) * parseInt(this.v2)
break
case'/':
// 除法运算
this.result =parseInt(this.v1) / parseInt(this.v2)
break
}
}
}
})
</script>
</body>
</html>
用eval简洁代码
<!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="https://cdn.jsdelivr.net/npm/vue"></script>
</head>
<body>
<div id="box">
<!--
1.输入v1 v2 option 结果result
2.点击等号按钮运算
-->
<input type="text" v-model:value='v1'>
<!-- +-*/下拉框 -->
<select name="" id="" v-model:value='opt'>
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type="text" v-model:value='v2'>
<input type="button" value='=' @click='calcu'>
<input type="text" v-model:value='result'>
</div>
<script>
new Vue({
el:'#box',
data:{
v1:0,
v2:0,
opt:'+',
result:0
},
methods:{
calcu:function(){
var codeStr =parseInt(this.v1) +this.opt +parseInt(this.v2)
this.result = eval(codeStr)
}
}
})
</script>
</body>
</html>