全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Vue.js 2.0中select级联下拉框实例

   在网上搜索了Vuejs2.0 动态级联select许久未果,决定自己总结一下自己的经验,有关select在Vue.js 2.0版本中的应用。首先我先说一下的我使用的技术,我参考了网上成熟的经验,选择以Vue.js 2.0+Vue-router+Vuex的全家桶。

    select首先要区分单选和多选,v-model在select单选和多选上有区别。

    select单选实例:

<select v-model="fruit">
 <option selected value="apple">苹果</option>
 <option value="banana">香蕉</option>
 <option value="watermelon">西瓜</option>
</select>
<span>Selected:{{ fruit }}</span>

    当被选中的option有value属性时,vm.selected 为对应option的value值;否则为对应options的text值。

    select多选实例:

<select v-model="fruit" multiple>
 <option selected value="apple">苹果</option>
 <option value="banana">香蕉</option>
 <option value="watermelon">西瓜</option>
</select>
<span>Selected:{{ fruit | json }}</span>

对于多选的select,被选中的值会被放入一个数组中。当然在我们实际开发中绝大部分都是动态select的情况,所以接下来将分析动态select的实例。

动态select

我们可以通过v-for、v-bind指令动态生成option,实例如下:

<template>
 <div id="app">
 <select v-model="fruit" >
 <option v-for="option in options" v-bind:value="option.value">
  {{option.text}}
 </option>
 </select>
 <span>Selected:{{ fruit | json }}</span>
 </div>
</template> 
<script>
 new Vue({
  el: '#app',
  data: {
   fruit: 'apple',
   options: [
    { text: '苹果', value: 'apple' },
    { text: '香蕉', value: 'banana' },
    { text: '西瓜', value: 'watermelon' }
   ]
  }
 });
</script>

   生成的代码结构如下:

<select>
 <option value="apple">苹果</option>
 <option value="banana">香蕉</option>
 <option value="watermelon">西瓜</option>
</select>

到这儿基础知识总结完了,开始来干货了。我在写级联select的时候遇到2个问题,一个问题是如何解决第一个select选中之后查询关联select的数据;一个问题就是我修改数据的时候如何默认选中级联的select数据,显示在页面。这2个问题主要还是第二个问题困扰我一点。

第一个问题的解决方案是对选中第一个select中的数据做监听,数据又变化就发起获取第二个关联select的请求。实例如下所示:

<template>
 <div class="box-select-first">
 <select v-model.lazy="resCity">
 <option v-for="sc in scLists" v-bind:value="sc.areacode">{{sc.cityname}}</option>
 </select>
 </div>
 <div class="box-select-second">
 <select v-model="resArea">
 <option v-for="sa in saLists" v-bind:value="sa.id">{{sa.areaname}}</option>
 </select>
 </div>
 
</template>
<script>
 export default {
 data: function () {
 return {
 resCity: null,
 resArea: null
 }
 },
 created: function() {
 let vm = this;
 vm.getSelectLists(); //获取城市下拉列表
 },
 watch: {
 resCity: 'getSecondSelectLists' //获取城市对应辖区的下拉列表
 },
 methods: {
 getSelectLists: function() {},
 getSecondSelectLists: function(){}
 }
 }
 
</script>

第二个问题的解决方案是首先我在实例已经创建完成之后被调用,先获取城市下拉列表成功之后再去获取编辑详情的数据,然后延时绑定关联的辖区列表的值,其实是为了获取在生命周期内监听城市之改变之后为先获取辖区列表数据加载,这样才能绑定显示辖区的下拉列表。

<template>
 <div class="box-select-first">
 <select v-model.lazy="resCity">
 <option v-for="sc in scLists" v-bind:value="sc.areacode">{{sc.cityname}}</option>
 </select>
 </div>
 <div class="box-select-second">
 <select v-model="resArea">
 <option v-for="sa in saLists" v-bind:value="sa.id">{{sa.areaname}}</option>
 </select>
 </div>
 
</template>
<script>
 export default {
 data: function () {
 return {
 resCity: null,
 resArea: null
 }
 },
 created: function() {
 let vm = this;
 vm.getSelectLists();  //实例已经创建完成之后获取城市下拉列表
 },
 watch: {
 resCity: 'getSecondSelectLists'  //监听城市值变化,获取城市对应辖区的下拉列表
 },
 methods: {
 getSelectLists: function() {
 let vm = this;
 if(vm.$route.name == 'modif') { //判断编辑页面获取编辑详情数据
  vm.getDetails(vm.$route.params.id); 
 }
 },
 getSecondSelectLists: function(){},
 getDetails:function(){
 setTimeout(function() {
  vm.resArea = data.id; //延时绑定辖区的下拉选项,为了辖区下拉数据先加载
  }, 300);
 }
 }
 }
</script>

总结:

     在Vue.js 2.0的生命周期中,select的级联下拉数据绑定,需要先加载好数据,然后才能绑定值。不然无法成功绑定级联下拉的值。

参考资料:

vue.js官网

以上所述是小编给大家介绍的Vue.js 2.0中select级联下拉框实例,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# vue.js  # select级联下拉框  # vue2.0  # select  # select级联  # vue.js select下拉框绑定和取值方法  # vue 不使用select实现下拉框功能(推荐)  # Vue.js仿Select下拉框效果  # 前端Vue select下拉框使用以及监听事件详解  # 绑定  # 级联  # 第一个  # 多选  # 第二个  # 我在  # 单选  # 加载  # 小编  # 自己的  # 都是  # 在此  # 上有  # 我们可以  # 给大家  # 就是我  # 问题是  # 再去  # 所示  # 一个问题 


相关文章: 深圳网站制作的公司有哪些,dido官方网站?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  网站设计制作企业有哪些,抖音官网主页怎么设置?  金*站制作公司有哪些,金华教育集团官网?  如何在建站宝盒中设置产品搜索功能?  招贴海报怎么做,什么是海报招贴?  制作电商网页,电商供应链怎么做?  一键网站制作软件,义乌购一件代发流程?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  如何通过WDCP绑定主域名及创建子域名站点?  图册素材网站设计制作软件,图册的导出方式有几种?  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  Bpmn 2.0的XML文件怎么画流程图  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  历史网站制作软件,华为如何找回被删除的网站?  广东专业制作网站有哪些,广东省能源集团有限公司官网?  建站主机选购指南:核心配置优化与品牌推荐方案  建站之星后台管理系统如何操作?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  如何选择可靠的免备案建站服务器?  建站主机空间推荐 高性价比配置与快速部署方案解析  如何通过FTP空间快速搭建安全高效网站?  网站制作需要会哪些技术,建立一个网站要花费多少?  如何基于云服务器快速搭建网站及云盘系统?  魔方云NAT建站如何实现端口转发?  怎么将XML数据可视化 D3.js加载XML  建站之星在线版空间:自助建站+智能模板一键生成方案  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  如何通过商城免费建站系统源码自定义网站主题?  建站之星Pro快速搭建教程:模板选择与功能配置指南  如何用AWS免费套餐快速搭建高效网站?  海南网站制作公司有哪些,海口网是哪家的?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  建站之星价格显示格式升级,你的预算足够吗?  如何通过虚拟主机空间快速建站?  无锡营销型网站制作公司,无锡网选车牌流程?  如何在新浪SAE免费搭建个人博客?  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  如何注册花生壳免费域名并搭建个人网站?  如何用VPS主机快速搭建个人网站?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  如何快速查询网站的真实建站时间?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  如何选购建站域名与空间?自助平台全解析  微信小程序 五星评分(包括半颗星评分)实例代码 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。