钉钉小程序使用getApp实现类似provide inject的功能 应用场景:解决页面同步子组件弹窗的滚动问题

前言:在开发钉钉小程序的时候 组件内部的弹窗滚动会带着视图同步滚动 所以需要在组件内部弹窗显示的时候禁用视图的scroll滚动 由于我组件封装的比较深 不可能逐级传递 dd也么有provide的语法 所以我使用的getApp 完成控制的效果 最终完美运行 觉得有帮助相互关注一下 后续会持续更新钉钉小程序的坑 废话不多说了 直接上代码

typescript 复制代码
   //首先在app.js里面定义全局变量
    
App({
  //存储回调的函数
  myProvide:null,
  //存储当前页面的this
  that:null,
  <!- end->

 //在page.js 就是要弹窗的时候禁止同步弹窗滚动的页面
Page({
  data: {
  /*
	  <scroll-view   class="scroll-view"
      catchscroll="scrollFn"
      scroll-y="{{isSorll}}" 
	*/
	//控制视图是否滚动 ture 滚动 false 不滚动
    isSorll:true,
  },
  onLoad({ id, recordTypeNo }) {
    var app = getApp();
    app.myProvide = this.setScrollStatus;
    app.that = this;
  },
  setScrollStatus(isSorll){
    var app = getApp();
    //这里的this获取不到 当前page内的属性 所以之前要把this存入全局变量that中
    app.that.setData({
    	
      isSorll
     })
  },
});
<--end-->
//在组件的js文件中 点击弹窗之前禁用视图的滚动
Component({
	 handleShowModel() {
      
      var app = getApp();
      //显示弹窗之前禁用外层视图的滚动
      app.myProvide(false)
      //显示弹窗
      this.setData({
        isFlag: true
      })
    },
})

这样就优雅的解决了视图层同步子组件滚动的问题

相关推荐
云起SAAS17 小时前
倒班日历助手抖音快手微信小程序看广告流量主开源
微信小程序·小程序·ai编程·看广告变现轻·倒班日历助手
sheji341618 小时前
【开题答辩全过程】以 基于微信小程序的失物认领系统为例,包含答辩的问题和答案
微信小程序·小程序
qq_256847888619 小时前
08cms房产多城市版最新v8.7含小程序及装修网的安装及配置方法整理出来希望能帮到大家
小程序·08cms房产系统源码·08cms装饰网门户系统·08cms 房产门户系统源码
风月歌19 小时前
python项目之摄影竞赛小程序
python·mysql·小程序·毕业设计·源码
云云只是个程序马喽19 小时前
2026年短剧系统开发搭建全流程教程(小程序+APP自营/红果模式/广告联盟/海外多语言)
小程序
计算机毕设指导619 小时前
基于微信小程序的网络安全知识科普平台系统【源码文末联系】
java·spring boot·安全·web安全·微信小程序·小程序·tomcat
墨着染霜华2 天前
钉钉群机器人 Markdown :颜色渲染 + 链接跳转 + 图片嵌入的正确实现
钉钉
天***88962 天前
小程序婚纱店摄影楼预约婚庆礼展示,小程序开发定制,会员下单档期系统
小程序
说私域2 天前
开源AI智能名片链动2+1模式商城小程序下短视频电商变现与广告变现的对比研究
人工智能·小程序
帅哥哥珍藏版2 天前
利用机器人Webhook向群推送告警通知
钉钉·飞书·企业微信