1、微博发布功能
html 代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id = "div1">
<textarea name="" id="" cols="30" rows="10" v-model="msg"></textarea>
<button @click="sub(n)">发布</button>
<ul>
<li v-for="(item,index) in list">{{item.con}}<span @click="del(n)">X</span></li>
</ul>
</div>
<!-- 引入vue文件 -->
<script src="js/vue.js"></script>
<script>
new Vue({
el:"#div1",
data:{
msg:"",
list:[
{
con:"123"
},
{
con:"456"
}
]
},
methods:{
sub(){
this.list.unshift({con:this.msg})
this.msg="";
},
del(n){
this.list.splice(n,1)
}
}
})
</script>
</body>
</html>
页面效果:
2、tab栏
html代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.current{
background: lime;
}
</style>
</head>
<body>
<div id="app">
<ul>
<li v-bind:class="{con:true,current:num==index}" v-for="(item,index) in top" v-on:click="change(index)">{{item}}</li>
</ul>
<main>
<div v-show="num==index" v-for="(item,index) in con">{{item}}</div>
</main>
</div>
<script src="js/vue.js"></script>
<script>
new Vue({
el:'#app',
data:{
num:0,
top:['新闻','娱乐','体育','财经'],
con:['新闻内容','娱乐内容','体育内容','金融内容']
},
methods:{
change(a){
this.num=a;
}
}
})
</script>
</body>
</html>
页面效果:
3、computed和watch有何区别?
(选自:https://www.cnblogs.com/penghuwan/p/7194133.html#_label1_0)
watch和computed都是以函数为基础的,但各自却都不同:
watch和computed都是以Vue的依赖追踪机制为基础的,它们都试图处理这样一件事情:当某一个数据(称它为依赖数据)发生变化的时候,所有依赖这个数据的“相关”数据“自动”发生变化,也就是自动调用相关的函数去实现数据的变动。
computed是计算属性,事实上和和data对象里的数据属性是同一类的(使用上),
例如:
computed:{
fullName: function () { return this.firstName + lastName }
}
取用的时候,用this.fullName去取用,就和取data一样(不要当成函数调用!)
watch:类似于监听机制+事件机制:
例如:
watch: {
firstName: function (val) { this.fullName = val + this.lastName }
}
firstName的改变是这个特殊“事件”被触发的条件,而firstName对应的函数就相当于监听到事件发生后执行的方法
watch和computed也有明显不同的地方:各自处理的数据关系场景不同
1.watch擅长处理的场景:一个数据影响多个数据
比如:
在watch中,一旦haiZeiTuan_Name(海贼团名称)发生改变
data选项中的船员名称全部会自动改变 (suoLong,naMei,xiangJiShi)
var vm = new Vue({
el: '#app',
data: {
haiZeiTuan_Name: '草帽海贼团',
suoLong: '草帽海贼团索隆',
naMei: '草帽海贼团娜美',
xiangJiShi: '草帽海贼团香吉士'
},
watch: {
haiZeiTuan_Name: function (newName) {
this.suoLong = newName + '索隆'
this.naMei = newName + '娜美'
this.xiangJiShi = newName + '香吉士'
console.log(this.suoLong)
console.log(this.naMei)
console.log(this.xiangJiShi)
}
}
})
// 更改watch选项中监控的主数据
vm.haiZeiTuan_Name = '橡胶海贼团'

2.computed擅长处理的场景:一个数据受多个数据影响

computed监控的数据:lufei_Name
两者关系: lufei_Name = firstName + secName + thirdName
所以等式右边三个数据任一改变,都会直接修改 lufei_Name
var vm = new Vue({
el: '#app',
data: {
// 路飞的全名:蒙奇·D·路飞
firstName: '蒙奇',
secName: 'D',
thirdName: '路飞'
},
computed: {
luFei_Name: function () {
return this.firstName + this.secName + this.thirdName
}
}
})
// 将“路飞”改为“海军王”
vm.thirdName = '海军王'
// 打印路飞的全名
console.log(vm.luFei_Name)

版权声明:本文为weixin_53037175原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。