按照老师上课及官网的资料总结而成,官网:https://cn.vuejs.org/v2/guide
上一篇写的是基础操作:https://blog.csdn.net/qq_43222167/article/details/106267024
计算
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<script src="js/vue.js" type="application/javascript" charset="UTF-8"></script>
<body>
<div id="app">
<input v-model="i1" />
<input v-model="i2" />
<h1>值:{{getValue}}</h1>
</div>
<div id="example">
<p>Original message: "{{ message }}"</p>
<p>Computed reversed message: "{{ reversedMessage }}"</p>
</div>
</body>
<script>
var app=new Vue({
el:"#app",
//初始化
data:{
i1:0,
i2:0
},
computed:{
getValue:function(){
/**
* parseInt():转成数字类型
*/
return parseInt(this.i1)+parseInt(this.i2);
}
}
});
var vm = new Vue({
el: '#example',
data: {
message: 'Hello'
},
computed: {
// 计算属性的 getter
reversedMessage: function () {
// `this` 指向 vm 实例
/**
* splig:拆分
* reverse:反转(从头至尾变成从尾至头)
* join:拼接成字符串
*/
return this.message.split('').reverse().join('')
}
}
})
</script>
</html>
运行后
在输入框里面随意输入数值
值随着输入的改变而改变
GetSet:计算属性默认只有 getter,不过在需要时你也可以提供一个 setter:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<script src="js/vue.js" type="application/javascript" charset="UTF-8"></script>
<body>
<div id="app">
<h1>getCount:{{getCount}}</h1>
</div>
</body>
<script>
var app=new Vue({
el:"#app",
computed:{
getCount:{
get:function(){
console.log("get");
return 10;
},
set:function(){
console.log("set");
}
}
},
});
</script>
</html>
进行后默认
f12后在控制台里面输入getCount=22
走了get方法,set默认不走
侦听器
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<script src="js/vue.js" type="application/javascript" charset="UTF-8"></script>
<body>
<div id="app">
<input v-model="i3" />
</div>
</body>
<script>
var app=new Vue({
el:"#app",
//初始化
data:{
i3:1
},
watch:{//侦听器
i3:function(newV,oldV){
console.log("开始变化,新的值:"+newV);
console.log("旧的值:"+oldV)
}
}
});
</script>
</html>
打开后的页面
摁下f12进行调试者模式后修改输入框里面的值
可以发生一直侦听着你修改的值
内联样式
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<script src="js/vue.js" type="application/javascript" charset="UTF-8"></script>
<body>
<div id="app">
<h1 :style="{color:co}">内联style样式</h1>
<h1 :style="cObject">内联style对象样式</h1>
</div>
</body>
<script>
var app=new Vue({
el:"#app",
data:{
co:"yellow",
cObject:{
color:"green"
}
}
})
</script>
</html>
If ElseIF Else
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<script src="js/vue.js" type="application/javascript" charset="UTF-8"></script>
<body>
<div id="app">
<h1 v-if="show">
if
</h1>
<h1 v-else>
else
</h1>
<hr />
<h1 v-if="a == 'a' ">
A
</h1>
<h1 v-else-if="a == 'b' ">
B
</h1>
<h1 v-else>
other
</h1>
</div>
</body>
<script>
var app=new Vue({
el:"#app",
data:{
show:true,
a:"a"
}
})
</script>
</html>
进来后的值是
把show的值改为false
a的值改为b
a的值再随意改成其它的
SHOW
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<script src="js/vue.js" type="application/javascript" charset="UTF-8"></script>
<body>
<div id="app">
<h1 v-show="shows">ff</h1>
</div>
</body>
<script>
var app=new Vue({
el:"#app",
data:{
ok:false,
shows:true
}
})
</script>
</html>
运行后
修改shows的值为false
页面显示空空如也
for
遍历集合
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<script src="js/vue.js" type="application/javascript" charset="UTF-8"></script>
<body>
<div id="app">
<!--
item:当前的值
index:索引值
list:集合名称
-->
<p v-for="(item,index) in list">
{{index}} - {{item.value}}
</p>
</div>
</body>
<script>
var app=new Vue({
el:"#app",
data:{
list:[
{value:"a"},
{value:"b"},
{value:"c"}
]
}
})
</script>
</html>
遍历对象
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<script src="js/vue.js" type="application/javascript" charset="UTF-8"></script>
<body>
<div id="app">
<p v-for="item in obj">
{{item}}
</p>
</div>
</body>
<script>
var app=new Vue({
el:"#app",
data:{
obj:{
name:"名称",
sex:"性别"
}
}
})
</script>
</html>
第三种方式
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<script src="js/vue.js" type="application/javascript" charset="UTF-8"></script>
<body>
<div id="app">
<p v-for="(item,name,index) in obj">
{{index}} - {{name}} - {{item}}
</p>
</div>
</body>
<script>
var app=new Vue({
el:"#app",
data:{
obj:{
name:"名称",
sex:"性别"
}
}
})
</script>
</html>
从方法中取出结果并且排序
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<script src="js/vue.js" type="application/javascript" charset="UTF-8"></script>
<body>
<div id="app">
<!-- 遍历计算属性,对数组进行筛选操作 -->
<p v-for="item in filterList">
{{item.value}}
</p>
</div>
</body>
<script>
var app=new Vue({
el:"#app",
data:{
list:[
{name:"a",value:"aa"},
{name:"b",value:"bb"},
{name:"c",value:"cc"}
],
},
computed:{
filterList:function(){
return this.list.filter(
function(v){
if(v.name == "a"){
return v
}
}
)
}
}
})
</script>
</html>