• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

微信小程序的开发学习(2)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一.微信小程序:树形菜单

由于项目需求,需要做一个类似树形菜单的东西来显示树状结构的数据。后端返回的数据为:

[
    {
        "code":"00",
        "name":"总公司",
        "children":[
            {
                "code":"0001",
                "name":"东北分公司",
                "children":[
                    {
                        "code":"000101",
                        "name":"辽宁分公司"
                    }
                ]
            },
            {
                "code":"0002",
                "name":"西南分公司",
                "children":[
                    {
                        "code":"000201",
                        "name":"成都分公司"
                    },
                    {
                        "code":"000202",
                        "name":"重庆分公司"
                    },
                    {
                        "code":"000203",
                        "name":"云南分公司"
                    }
                ]
            },
            {
                "code":"0003",
                "name":"华南分公司",
                "children":[
                    {
                        "code":"000301",
                        "name":"深圳分公司"
                    }
                ]
            }
        ]
    }
]

那么问题来了,小程序并没有树形控件,小程序无法动态新增子节点。此时非常怀念elementui啊~,百度很多说可以用多级嵌套wx:for来实现,但是太麻烦了,找了很久,发现有大佬做了一个组件,我就在大佬的组件基础上加以修改最后应用到我的项目中去。https://blog.csdn.net/haishangfeie/article/details/81040211  

首先,我们引入插件path-view,然后在进行样式设计,相关代码如下:

 <view class="ruleZhezhao {{isRuleTrue?\'isRuleShow\':\'isRuleHide\'}}">
              <view class=\'ruleZhezhaoContent\'>
                  <image src=\'../../imgs/out1.png\' class=\'ruleHide\' bindtap=\'hideRule\'></image>
                  <path-view keepLoc="{{true}}"  btnTxt=\'选中本项\' catchtapBtn="selThis"  unnormalizedValue="{{unnormalizedValue2}}" contentKey="name">
                  </path-view>
              </view>
          </view>

css设计:

.isRuleShow{
    display: block;
}
.isRuleHide{
    display: none;
}
.ruleZhezhao{
    height: 100%;
    width: 100%;
    position: fixed;
    background-color:rgba(0, 0, 0, .5);
    z-index: 2;
    top: 0;
    left: 0;
}
.ruleZhezhaoContent{
    z-index: 99;
    padding: 20rpx 0;
    width: 300px;
    height: 300px;
    background: #fff;
    margin: 40% auto;
    border-radius: 20rpx;
    /* display: flex; */
    flex-direction: column;
    justify-content: space-around;
    align-items: center;
    position: relative;
}
.ruleHide{
    height: 60rpx!important;
    width: 60rpx!important;
    position: absolute;
    top: 5rpx;
    right: 5rpx;
}

js设计:

//获取事故单位
  showRule: function () {
    this.setData({
      isRuleTrue: true

    })
  },
  hideRule: function () {
    this.setData({
      isRuleTrue: false
    })
  },
  selThis(e) {
    // console.log(e.detail);
    this.setData({
      company_name: e.detail.name,
      company_code: e.detail.code,
      isRuleTrue: false
    })
  },

 

最终实现版本如下:

二.小程序的canvas层级最高问题

项目需求为在canvas页面实现一个弹框。像map,canvas,video,textarea是由客户端创建的原生组件,原生组件的层级是最高的,所以页面中的其他组件无论设置z-index为多少,都无法覆盖在原生组件上。小程序有提到如何解决原生组件层级最高问题,比如cover-view,但是它也有一定限制,比如它只支持嵌套cover-view,cover-image,button。百度有提到几种办法,比如可以在点击弹框的时候将canvas转换为image。但是我没有实现,还有说可以在canvas中设置定位,比如设置left一个比较大的值,让canvas的显示超出屏幕范围。我想的是如果canvas 本身使用hidden或display:none无效的话。是否可以在外部的view设置是否显示,然后测试居然可以。

如果没有设置的话效果如下:

 

修改代码如下:

 <view class="container {{isRuleTrue?\'isRuleHide\':\'isRuleShow\'}}">
        <ec-canvas id="mychart-dom-line" canvas-id="mychart-line" ec="{{ecOne}}"></ec-canvas>
        <ec-canvas id="mychart-dom-bar"  canvas-id="mychart-bar"  ec="{{ecTwo}}"></ec-canvas>
      </view>  

 js代码:

showRule: function () {
    this.setData({
      isRuleTrue: true

    })
  },
  hideRule: function () {
    this.setData({
      isRuleTrue: false
    })
  },

 

修改后效果如下:

 

 

 

 

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
小程序 CanvasContext发布时间:2022-07-18
下一篇:
微信小程序中使用canvas发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap