voinc+vue实现级联选择

5 篇文章 0 订阅
2 篇文章 0 订阅

需求: vonic中实现级联选择

<!DOCTYPE html>
<html>
<head>
    <title>下拉框</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://unpkg.com/vonic@2.0.0-beta.11/dist/vonic.min.css">

    <style>
        .areaCom .tab-item{float:left; width:33%!important; flex:none;}
        .areaCom .page-content{ padding-top:92px!important;}
    </style>
</head>
<body>

<von-app></von-app>

<script type="text/x-template" id="index">
    <div class="ss" v-nav="{ title: '首页' }">
        <div class="list list-borderless hl-list list-ios von-cascade areaCom">
            <label class="item item-ios item-icon-right" v-on:click="areaSel" style="margin-top: 80px;">
                <span>下拉选择</span> <i class="icon ion-ios-arrow-right"></i>
                <span class="item-note">{{area}}{{street}}{{community}}</span>
                <div class="hairline-bottom"></div>
            </label>
        </div>
        <div class="areaCom von-cascade-panel active" v-if="areaShow" style="height:300px">
            <div class="title">选择</div>
            <div class="page has-navbar">
                <div class="tabs-striped tabs-top tabs-background-light tabs-color-positive">
                    <div class="tabs">
                        <a class="tab-item" v-bind:class="{'active':tabShow==1}" v-on:click="areaLi(1)">{{area}}</a>
                        <a class="tab-item" v-bind:class="{'active':tabShow==2}" v-on:click="areaLi(2)" v-if="streetList.length>0">{{street}}</a>
                        <a class="tab-item" v-bind:class="{'active':tabShow==3}" v-on:click="areaLi(3)" v-if="communityList.length>0">{{community}}</a>
                    </div>
                </div>
                <div class="page-content" v-if="tabShow==1">
                    <div class="list list-borderless options">
                        <div class="item" v-for="(item,index) in areaList" v-on:click="reStreet(item)">
                            <div class="hairline-top"></div>
                            <span>{{item}}</span>
                            <div class="hairline-bottom" v-if="index!=areaList.length-1"></div>
                        </div>
                    </div>
                </div>
                <div class="page-content" v-if="tabShow==2">
                    <div class="list list-borderless options">
                        <div class="item" v-for="(item,index) in streetList" v-on:click="reCommunity(item)">
                            <div class="hairline-top"></div>
                            <span>{{item}}</span>
                            <div class="hairline-bottom" v-if="index!=streetList.length-1"></div>
                        </div>
                    </div>
                </div>
                <div class="page-content" v-if="tabShow==3">
                    <div class="list list-borderless options">
                        <div class="item" v-for="(item,index) in communityList" v-on:click="areaComp(item)">
                            <div class="hairline-top"></div>
                            <span>{{item}}</span>
                            <div class="hairline-bottom" v-if="index!=communityList.length-1"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div von-backdrop="" class="backdrop visible active" v-if="areaShow" v-on:click="areaSelClose"></div>
    </div>
</script>

<script src="https://unpkg.com/axios@0.15.3/dist/axios.min.js"></script>
<script src="https://unpkg.com/vue@2.1.10/dist/vue.min.js"></script>
<script src="plugins/vue/vue-resource.min.js"></script>
<script src="https://unpkg.com/vue-router@2.2.1/dist/vue-router.min.js"></script>
<script src="https://unpkg.com/vuex@2.2.1/dist/vuex.min.js"></script>
<script src="https://unpkg.com/vonic@2.0.0-beta.11/dist/vonic.min.js"></script>

<script>引入下面的js</script> 

</body> 

</html>

     js

    var areaData = {
        areaShow:false,//是否显示区选择div
        tabShow:1,//显示区, 街, 社区 
        area: "请选择",//区名
        street:"",//街名
        community:"",//社区名
        areaList:["一区","二区"],//查询出来的区列表
        streetList:[],//查询出来的街列表
        communityList:[],//查询出来的社区列表
    };
    var index = {
        template: '#index',
        data: function(){
            return areaData;
        },
        created: function () {

        },
        methods: {
            areaSel: function () {//点击  下拉选择  初试弹出区选择
                var self = this;
                self.areaShow=true;
                self.tabShow=1;
            },
            areaSelClose: function () {//点击弹出框以外, 关闭弹出框
                var self = this;

                if(self.street=="请选择"){
                    alert("请选择街");
                    self.areaShow=false;
                    self.area="请选择";
                    self.street="";
                }else if(self.community=="请选择"){
                    alert("请选择社区");
                    self.streetList=[];
                    self.areaShow=false;
                    self.area="请选择";
                    self.street="";
                    self.community="";
                }else{
                    self.areaShow=false;
                }
            },

            areaLi: function (n) {//选择后,还没退出, 需要修改相应的位置,点击后弹出相应的列表
                var self = this;
                self.tabShow=n;
            },
            reStreet: function (name) {//查询街列表
                var self = this;
                /*Vue.resource("接口地址"+name).get().then(function (response) {
                    var data = response.data.data;
                    self.streetList= data;
                });*/
                self.streetList= ["一街","二街"];

                self.area=name;//将传过来的区名赋值给属性,并显示
                self.street="请选择";
                self.community="";
                self.tabShow=2;
            },
            reCommunity: function (name) {//查询社区列表
                var self = this;
                /*Vue.resource("接口地址"+name).get().then(function (response) {
                 var data = response.data.data;
                 self.communityList= data;
                 });*/
                self.communityList= ["一社区","二社区"];

                self.street=name;//将传过来的社区名赋值给属性,并显示
                self.community="请选择";

                self.tabShow=3;
            },
            areaComp: function (name) {//用来赋值最后的社区属性,并显示
                var self = this;
                self.community=name;
                self.areaSelClose();
            },
        }
    }

    var routes = [
        { path: '/', component: index }
    ]

    Vue.use(Vonic.app, {
        routes: routes
    })

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值