vue中使用vant中TreeSelect 分类选择组件

在vue中使用vant中TreeSelect的组件
中文文档:TreeSelect 分类选择
效果展示:
vue中使用vant中TreeSelect 分类选择组件_第1张图片

   //先在你需要的页面中引入,第一个是弹出层,第二个是选择的
	import { Popup } from "vant";
	import { TreeSelect } from "vant";

代码部分:

    <van-popup v-model="policeShow" position="top" :overlay="true">
      <van-tree-select
        :items="items"
        :active-id.sync="items.activeId"
        :main-active-index.sync="items.activeId"
        @click-nav="onNavClick" 
      >
        <template slot="content" >
          <ul class="right-content">
            <li v-for="(item,index) in policeList" :key="index" 		   :class="{active:policeCode==item.policeCode}"  @click="onItemClick(item.policeName,item.policeCode)"> {{item.policeName}} </li>
          </ul>
        </template>
      </van-tree-select>
      <div class="btn" @click="onPoliceClick">完成</div>
    </van-popup>

现在我来解析我的业务逻辑,希望对你能有帮助:

1.首先:items,是个数组,我们需要给它传个数组过去,用来展示左侧的数据

//这是我的后台传过来的数据,我将这个数据加到items里面去,左侧的数据将就展示出来了,注意这里是循环的数据,我为了简单这么写了,还有items中的key尽量用text,要不会渲染不上,在picker上面是有个value-key去改变的,这一会儿在下一篇文章中讲
{
    "code": 200,
    "message": "success",
    "data": [
        {
            "substationCode": "1101010000",
            "substationName": "东城区分局"
        },
        {
            "substationCode": "100002",
            "substationName": "昌平区分局"
        },
        {
            "substationCode": "100003",
            "substationName": "海淀区分局"
        },
        {
            "substationCode": "100001003",
            "substationName": "海淀区分局"
        },
        {
            "substationCode": "1010101",
            "substationName": "昌平区分局"
        },
        {
            "substationCode": "1010101\t",
            "substationName": "111"
        },
        {
            "substationCode": "1000021",
            "substationName": "测试重复分局"
        },
        {
            "substationCode": "12223",
            "substationName": "河北分局"
        }
    ]
}
      this.items.push({
              activeId:substationCode,
              text:substationName
      })

2.我们要根据左侧的数据去渲染右侧的数据(右侧的数据是自定义的,所以你自己加事件就行)

	@click-nav代码部分已经写了
	onNavClick(index) {
       console.log(index)    
        let substationCode = this.items[index].activeId //这是我们通过index获取到当前点击的值
        this.requestPoliceList(substationCode) //这是请求右侧列表的请求通过activeId去请求。
    },

总结:
1.渲染左侧,将后台给你的值push到items里面(注意只能使用text)
2.通过@click-nav获取当前的index并拿到id
3.通过id渲染右侧的数据

你可能感兴趣的:(VUE,vant,vue,分类选择)