使用element ui的级联选择器
一、通过CDN的方式引入CSS、JS文件
<!--引入element ui的样式文件--><link rel="stylesheet" href="https://unpkg.com/element-ui@2.15.7/lib/theme-chalk/index.css"><!-- 在引入element之前,先引入vue --><script src="https://unpkg.com/vue@2.x/dist/vue.js"></script><!-- 引入element ui的js文件 --><script src="https://unpkg.com/element-ui@2.15.7/lib/index.js"></script><!--引入axios--><script src="https://unpkg.com/axios/dist/axios.min.js"></script>
二、使用element ui的级联选择器
<!--1.定义name和id属性,是为了方便使用js对元素进行操作(只是初学练习,当前网页混合使用了jq和element ui)2.clearable定义输入框可清空3.options定义可选项的数据源4.@change定义,输入框内的值改变时触发的的方法5.props的expandTrigger参数定义次级菜单的展开方式,hover表示鼠标悬浮在上面时展开,click表示单击展开6.filterable表示可手动搜索选项--><div id="pickup-zone"><el-cascader name="pickupzone" id="pickupzone" v-model="value" clearable placeholder="请选择地区" :options="pickupZoneOptions" @change="handleChange" :props="{ expandTrigger: 'hover' }" filterable></el-cascader></div><!--通过一个隐藏的dom元素,将级联选择器的值传递到后台--><input type="text" id="hidden-pickupzone" name="hidden-pickupzone" style="display: none">
三、
//实例化vue,使用element-ui控件,显示级联选择器,通过axios异步加载数据源var Main = {data() {return {value: [],pickupZoneOptions: [],}},methods: {//输入框内的值改变时,调用的方法handleChange(value) {console.log(value);//通过js删除一个不是通过vue实例化的dom元素var pickupzone = document.getElementById("pickup-zone");var errormsg = document.getElementById("oerror");pickupzone.removeChild(errormsg);//通过一个隐藏的dom元素,将element ui级联选择器的值传递到后台document.getElementById("hidden-pickupzone").value = value;}},mounted() {let tags = {tag: ''}//通过axios获取后台数据源,并赋值给级联选择器axios.post('index.php/getpickupzone', tags).then(res => {this.pickupZoneOptions = res.data;})},};var Ctor = Vue.extend(Main);new Ctor().$mount('#pickup-zone');
四、后端提供的数据(PHP语言、tp5框架)
//获取拖车网点地址,返回到前端public function getpickupzone(Request $request){$data = [];if($request->param('tag')==''||$request->param('tag')==null){//获取所有的省份的id和名称$province = FivChinazoneCode::where('level',1)->field('id,title')->select();//遍历所有的省份,定义数据源的value、label、leafforeach ($province as $key => $value) {$data[$key]['value'] = $value->id;$data[$key]['label'] = $value->title;$data[$key]['leaf'] = false;//获取每一个省份包含的城市的id和名称$city = FivChinazoneCode::where('pid', $value->id)->field('id,title')->select();//遍历所有的城市,作为省份的children,并定义每一个children的value、label和leafforeach ($city as $keyt => $valuet) {$data[$key]['children'][$keyt]['value'] = $valuet->id;$data[$key]['children'][$keyt]['label'] = $valuet->title;$data[$key]['children'][$keyt]['leaf'] = false;//获取每一个城市包含的区域的id和名称$zone = FivChinazoneCode::where('pid', $valuet->id)->field('id,title')->select();//遍历所有的区域,作为城市的children,并定义每一个children的value、label和leafforeach ($zone as $keyth => $valueth) {$data[$key]['children'][$keyt]['children'][$keyth]['value'] = $valueth->id;$data[$key]['children'][$keyt]['children'][$keyth]['label'] = $valueth->title;$data[$key]['children'][$keyt]['children'][$keyth]['leaf'] = true;}}}}return json($data);}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号