radio 在移动端自定义

# 在移动端 单选框样式不好看  ui会设计一套单选框样式  开发也就只有按照ui样式来进行开发

 本人测试 使用2中方法实现单选,动态改变图片,获取选中的值  不足之处请指出(谢谢)

radio 在移动端自定义

以下是实现代码:

<template>
<div class="bankInfo">
<!-- 列表 start-->
<section>
<ul>
                <!-- 第一种实现方法 -->
<li v-for="(item, index) in listArray" :key="index">
<i @click="change(item,index)" :class="['not_icon',{style:selectBg[index]}]"></i>
<span class="number">{{item.num}}</span>
                    <span class="text">{{item.text}}</span>
</li>

            <!-- 第二种实现方法 -->        

                 <!-- <li><i @click="change(item,index)" :class="['not_icon',{style:index == selectedInfo}]"></i>

<span class="number">{{item.num}}</span>
                     <span class="text">{{item.text}}</span>
               </li> -->

         </ul>

</section>
<!-- 列表 end-->
</div>
</template>

<script>
export default {
data () {
return {
                // 模拟数据
listArray: [
{
id: 0,
num: '01233890',
text: '哈哈哈哈'
},
{
id: 1,
num: '01233890',
text: '嘻嘻嘻嘻'
},
{
id: 2,
num: '01233890',
text: '呃呃呃呃'
},
{
id: 3,
num: '01233890',
text: '嘿嘿嘿嘿'
},
{
id: 4,
num: '01233890',
text: '么么么么'
}
],
selectBg:[],
selectedInfo: 0 //第二种方法直接根据索引来切换类
}
},
methods: {

        //  当切换单选按钮时 保存当前获取到的值

change (item,index) {
                // 第一种方法通过vue中set方法来改变数组
// this.selectBg.forEach(function(element,index) {
// this.$set(this.selectBg,index,false)
// }, this)
// this.$set(this.selectBg,index,true)


this.selectedInfo = item.id
console.log('获取',this.selectedInfo)
}
},
created () {
},
mounted (){
}
}
</script>

<style lang="scss" >
.bankInfo {
width: 100%;
height: 200px;
section {
width: 100%;
ul {
width: 100%;
li {
width: 100%;
display: flex;
align-items: center;
i {
display: inline-block;;
width: 46px;
height: 46px;
background-size: 100% 100%;
}
.not_icon {
background: url('https://images2015.cnblogs.com/blog/385935/201606/385935-20160614150028885-517912247.png')
            no-repeat;
}
.style {
background: url('https://images2015.cnblogs.com/blog/385935/201606/385935-20160614150011338-374586129.png')
            no-repeat;
}
.number {
margin-left: 30px;
}
.text {
margin-left: 30px;
}
}
}
}
}
</style>