钉钉小程序使用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
      })
    },
})

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

相关推荐
bug总结1 小时前
uniapp 微信小程序请求规范
微信小程序·小程序·uni-app
微三云 - 廖会灵 (私域系统开发)1 小时前
垂直行业 SaaS 实践|AI 美业小程序,构建美业服务全链路数字化闭环
人工智能·小程序
做萤石二次开发的哈哈2 小时前
海康班班通交互一体机技能接入实战:ISAPI透传+OTAP双协议封装,Web/App/小程序教学管理应用一站生成
前端·物联网·小程序·交互·萤石开放平台·蓝海aiot一站式工作台·aiot开发
云迈科技-软件定制开发2 小时前
长沙企业软件开发、App 开发全流程|需求、开发、上线、运维拆解
小程序·app开发
盟道科技3 小时前
电商小程序SKU数据模型设计:SPU、规格组合、库存与价格的工程实践
服务器·小程序·apache
mykj15513 小时前
社交找搭子app小程序找人组局更方便
小程序·app开发·小程序开发·找搭子app
爱折腾的编程老炮1 天前
潮玩品牌自建抽盒机小程序——商城 + 抽盒 + 一番赏 + 会员 + 社区,一套代码怎么搭
spring boot·小程序·vue·mybatis·uniapp
新知图书1 天前
第13章 从一句话需求到上线“续费管家”小程序
人工智能·小程序·智能体
数商云企1 天前
2026年陕西软件开发首选数商云企AI微入口小程序定制方案
人工智能·小程序
bug总结2 天前
uniapp 微信小程序分包规范
微信小程序·小程序·uni-app