garfieldzhong

最近使用element-ui 的Casecader 级联对象时,后台要求将对象的label值也传过去,然而,element-ui 官方并没有提供这样方(keng)便 ( die ) 的方法。

一时间直是束手无策... 

无奈只能通过遍历树来一一获取了:

getCascaderObj = function(val, opt){
        return val.map(function (value, index, array) {
            for (var itm of opt) {
                if (itm.value == value) { opt = itm.children; return itm; }
            }
            return null;
        });
    }

完整事例:

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-default/index.css">
    <style>

    </style>
</head>

<body>
    <div id="app">
        <el-cascader v-model="val" placeholder="试试搜索:指南" :options="options" filterable @change="handleItemChange"></el-cascader>
        <div v-for="i in vals">
            label:{{i.label}} - value{{i.value}}
        </div>
    </div>
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>
    <script> 
        function getCascaderObj(val,opt) {
            return val.map(function (value, index, array) {
                for (var itm of opt) {
                    if (itm.value == value) { opt = itm.children; return itm; }
                }
                return null;
            });
        }
    </script>
    <script>
        var app = new Vue({
            el: \'#app\',
            data: {
                vals:[],
                val: [],
                options: [{
                    value: \'zhinan\',
                    label: \'指南\',
                    children: [{
                        value: \'shejiyuanze\',
                        label: \'设计原则\',
                        children: [{
                            value: \'yizhi\',
                            label: \'一致\'
                        }, {
                            value: \'fankui\',
                            label: \'反馈\'
                        }, {
                            value: \'xiaolv\',
                            label: \'效率\'
                        }, {
                            value: \'kekong\',
                            label: \'可控\'
                        }]
                    }, {
                        value: \'daohang\',
                        label: \'导航\',
                        children: [{
                            value: \'cexiangdaohang\',
                            label: \'侧向导航\'
                        }, {
                            value: \'dingbudaohang\',
                            label: \'顶部导航\'
                        }]
                    }]
                }, {
                    value: \'zujian\',
                    label: \'组件\',
                    children: [{
                        value: \'basic\',
                        label: \'Basic\',
                        children: [{
                            value: \'layout\',
                            label: \'Layout 布局\'
                        }, {
                            value: \'color\',
                            label: \'Color 色彩\'
                        }, {
                            value: \'typography\',
                            label: \'Typography 字体\'
                        }, {
                            value: \'icon\',
                            label: \'Icon 图标\'
                        }, {
                            value: \'button\',
                            label: \'Button 按钮\'
                        }]
                    }, {
                        value: \'form\',
                        label: \'Form\',
                        children: [{
                            value: \'radio\',
                            label: \'Radio 单选框\'
                        }, {
                            value: \'checkbox\',
                            label: \'Checkbox 多选框\'
                        }, {
                            value: \'input\',
                            label: \'Input 输入框\'
                        }, {
                            value: \'input-number\',
                            label: \'InputNumber 计数器\'
                        }, {
                            value: \'select\',
                            label: \'Select 选择器\'
                        }, {
                            value: \'cascader\',
                            label: \'Cascader 级联选择器\'
                        }, {
                            value: \'switch\',
                            label: \'Switch 开关\'
                        }, {
                            value: \'slider\',
                            label: \'Slider 滑块\'
                        }, {
                            value: \'time-picker\',
                            label: \'TimePicker 时间选择器\'
                        }, {
                            value: \'date-picker\',
                            label: \'DatePicker 日期选择器\'
                        }, {
                            value: \'datetime-picker\',
                            label: \'DateTimePicker 日期时间选择器\'
                        }, {
                            value: \'upload\',
                            label: \'Upload 上传\'
                        }, {
                            value: \'rate\',
                            label: \'Rate 评分\'
                        }, {
                            value: \'form\',
                            label: \'Form 表单\'
                        }]
                    }, {
                        value: \'data\',
                        label: \'Data\',
                        children: [{
                            value: \'table\',
                            label: \'Table 表格\'
                        }, {
                            value: \'tag\',
                            label: \'Tag 标签\'
                        }, {
                            value: \'progress\',
                            label: \'Progress 进度条\'
                        }, {
                            value: \'tree\',
                            label: \'Tree 树形控件\'
                        }, {
                            value: \'pagination\',
                            label: \'Pagination 分页\'
                        }, {
                            value: \'badge\',
                            label: \'Badge 标记\'
                        }]
                    }, {
                        value: \'notice\',
                        label: \'Notice\',
                        children: [{
                            value: \'alert\',
                            label: \'Alert 警告\'
                        }, {
                            value: \'loading\',
                            label: \'Loading 加载\'
                        }, {
                            value: \'message\',
                            label: \'Message 消息提示\'
                        }, {
                            value: \'message-box\',
                            label: \'MessageBox 弹框\'
                        }, {
                            value: \'notification\',
                            label: \'Notification 通知\'
                        }]
                    }, {
                        value: \'navigation\',
                        label: \'Navigation\',
                        children: [{
                            value: \'menu\',
                            label: \'NavMenu 导航菜单\'
                        }, {
                            value: \'tabs\',
                            label: \'Tabs 标签页\'
                        }, {
                            value: \'breadcrumb\',
                            label: \'Breadcrumb 面包屑\'
                        }, {
                            value: \'dropdown\',
                            label: \'Dropdown 下拉菜单\'
                        }, {
                            value: \'steps\',
                            label: \'Steps 步骤条\'
                        }]
                    }, {
                        value: \'others\',
                        label: \'Others\',
                        children: [{
                            value: \'dialog\',
                            label: \'Dialog 对话框\'
                        }, {
                            value: \'tooltip\',
                            label: \'Tooltip 文字提示\'
                        }, {
                            value: \'popover\',
                            label: \'Popover 弹出框\'
                        }, {
                            value: \'card\',
                            label: \'Card 卡片\'
                        }, {
                            value: \'carousel\',
                            label: \'Carousel 走马灯\'
                        }, {
                            value: \'collapse\',
                            label: \'Collapse 折叠面板\'
                        }]
                    }]
                }, {
                    value: \'ziyuan\',
                    label: \'资源\',
                    children: [{
                        value: \'axure\',
                        label: \'Axure Components\'
                    }, {
                        value: \'sketch\',
                        label: \'Sketch Templates\'
                    }, {
                        value: \'jiaohu\',
                        label: \'组件交互文档\'
                    }]
                }]
            },
            methods: {
                handleItemChange() {
                    this.vals=getCascaderObj(this.val, this.options);
                }
            }
        })
    </script>
</body> 
</html>

 

以上获取到的将会是一个数组,可根据数组来获取其中的label

 

作者:关爱单身狗成长协会
链接:https://www.jianshu.com/p/b3e40837ec1d
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

分类:

技术点:

相关文章: