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

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

相关推荐
vx_dmxq21112 小时前
【PHP考研互助系统】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·mysql·考研·微信小程序·小程序·php
蹦极的考拉12 小时前
夜间无法登录:ThinkPHP api接口 23:00 准时罢工的排查全纪录
小程序·thinkphp·api接口·无法登陆
vx_vxbs6614 小时前
【SSM电影网站】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·python·mysql·小程序·php·idea
G佳伟21 小时前
‌微信小程序Webview转发页面空白问题解决方案‌
微信小程序·小程序
vx_vxbs661 天前
【SSM电动车智能充电服务平台】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·mysql·spring cloud·小程序·php·idea
低代码布道师1 天前
医疗小程序12出诊列表
低代码·小程序
Coder-coco1 天前
游戏助手|游戏攻略|基于SprinBoot+vue的游戏攻略系统小程序(源码+数据库+文档)
java·vue.js·spring boot·游戏·小程序·论文·游戏助手
小小王app小程序开发2 天前
盲盒小程序一番赏衍生玩法:魔王赏、非酋赏、狂欢赏差异化分析
小程序
2501_915106322 天前
iOS App 测试工具全景分析,构建从开发调试到线上监控的多阶段工具链体系
android·测试工具·ios·小程序·uni-app·iphone·webview
头发还在的女程序员3 天前
基于JAVA语言的短剧小程序-抖音短剧小程序
java·开发语言·小程序