在网上搜索了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级联下拉框实例,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
各种大小的下拉框 <div class="row"> <div class="field-label">mini</div> <div class="select-size" data-skin="mini"></div> </div> <div class="row"> <div class="field-label">tiny</div> <div class=
本文向大家介绍jQuery制作简洁的多级联动Select下拉框,包括了jQuery制作简洁的多级联动Select下拉框的使用技巧和注意事项,需要的朋友参考一下 今天我们要来分享一款很实用的jQuery插件,它是一个基于jQuery多级联动的省市地区Select下拉框,并且值得一提的是,这款联动下拉框是经过自定义美化过的,外观比浏览器自带的要漂亮许多。另外,这个Select下拉框也可以绑定下拉事件,
本文向大家介绍js实现select下拉框菜单,包括了js实现select下拉框菜单的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现select下拉框菜单的详细代码。分享给大家供大家参考。具体如下: 运行效果截图如下: 具体代码如下: <!DOCTYPE html> 如果大家还想深入学习,可以点击jquery下拉框效果汇总、JavaScript下拉框效果汇总进行学习。 以上就是js实
本文向大家介绍js实现的下拉框二级联动效果,包括了js实现的下拉框二级联动效果的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现的下拉框二级联动效果。分享给大家供大家参考,具体如下: PS:这里再为大家推荐一款非常好用的JavaScript压缩、格式化与加密工具,功能非常强大: JavaScript压缩/格式化/加密工具:http://tools.jb51.net/code/jsco
本文向大家介绍Android使用Spinner实现城市级联下拉框,包括了Android使用Spinner实现城市级联下拉框的使用技巧和注意事项,需要的朋友参考一下 最近写一个使用Spinner实现城市级联下拉框的Dome,现在总结一下,第一次写博客,互相学习。 activity_main.xml里面有三个Spinner Spinner的每一个item布局,里面只有一个TextView 下面是Spi
本文向大家介绍jQuery实现多级联动下拉列表查询框,包括了jQuery实现多级联动下拉列表查询框的使用技巧和注意事项,需要的朋友参考一下 本文实例介绍了jQuery实现多级联动下拉列表查询框的详细代码,分享给大家供大家参考,具体内容如下 效果图: 具体代码: 希望本文所述对大家学习jquery程序设计有所帮助。
本文向大家介绍Bootstrap select多选下拉框实现代码,包括了Bootstrap select多选下拉框实现代码的使用技巧和注意事项,需要的朋友参考一下 前言 项目中要实现多选,就想到用插件,选择了bootstrap-select。 附上官网api链接,http://silviomoreto.github.io/bootstrap-select/. 没有中文的。对付看吧。有机会每个方法实
本文向大家介绍Bootstrap select实现下拉框多选效果,包括了Bootstrap select实现下拉框多选效果的使用技巧和注意事项,需要的朋友参考一下 在学习bootstrap实现下拉多选效果的时候,觉得该效果很好,所以拿来分享下,这里就不详细的描述了,直接附上代码给各位看看 HTML代码: js代码: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。