点击每个li后让它切换成val2的值 再点一次val2可以切换成val的值 可以一直这样来回切换 这个效果应该怎么做呢 我写成这样了 试了一下不行 变不回去了
<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
ul{list-style: none;}
li{border: 1px solid black;width: 100px;height: 20px;}
</style>
<script src="vue.js"></script>
<script type="text/javascript">
window.onload = function() {
new Vue({
el: '#div1',
data:{
arr:[
{uid:1,val:'zhangsan',val2:'tom'},
{uid:2,val:'lisi',val2:'john'},
{uid:3,val:'wangwu',val2:'jiff'},
]
},
methods:{
change:function(uid){
this.arr.map(item => {
if(item.uid==uid){
item.val=item.val2;
}else{
item.val=item.val;
}
})
}
}
})
}
</script>
</head>
<body>
<div id="div1">
<ul>
<li v-for="item in arr" @click="change(item.uid)">{{item.val}}</li>
</ul>
</div>
</body>
</html>
你这个操作直接导致了 数据被覆盖
如果要实现这个效果,可以考虑给每一个item,增加一个 showVal: default->valIndex,每次点击切换这个变量,然后控制展示的内容 v-show or v-if,不要改动原始数据
code: