案例—点击电影列表中一项,该项文字变红
思想:
需要定义一个数组来存放电影列表;
movies: ['少年派', '匆匆那年', '夏洛特烦恼', '海王']
需要一个ul来显示电影列表;
ul要监听鼠标点击事件,要为事件处理函数传入当前点击的电影的索引,从而判断点击的是哪个电影。
定义一个currentIndex变量来表示当前显示为红色的电影索引,当index==currentIndex时,class生效,字体显示为红色;
//绑定class
:class="{active:currentIndex===index}"
//监听鼠标点击事件
@click="liClick(index)"
methods:{
liClick(index){
this.currentIndex=index
}
}
要为ul动态绑定一个class,当点击的class生效,从而字体显示为红色;
完整代码为:
<div id="app">
<!-- 把电影列表先显示出来,要获得当前点击的索引,要绑定点击事件-->
<ul>
<li v-for="(item,index) in movies" :class="{active:currentIndex===index}" @click="liClick(index)">
{{item}}
</li>
</ul>
</div>
<script src="./js/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
// 存放电影列表的数组
movies: ['少年派', '匆匆那年', '夏洛特烦恼', '海王'],
currentIndex: 0
},
methods: {
liClick(index) {
this.currentIndex = index
}
}
})
</script>