当前位置: 首页 > article >正文

微信小程序实现watch监听数值改变的效果

前言

  • 需要用到Javascript中的Object.defineProperty()方法,实现劫持对象的get/set指令,从而监听到对象的赋值(调用setter),达到监听数值改变效果

示例

监听变量方法:

function watchData(pageData, key, fn) {
  var oldVal = pageData[key];
  Object.defineProperty(pageData, key, {
    configurable: true,
    enumerable: true,
    get: function () {
      return oldVal ;
    },
    set: function (newVal) {
      if (newVal === oldVal) return;
      fn && fn(newVal);
      oldVal = newVal;
    },
  });
  fn && fn(oldVal);
}

监听 scrollTop 的值的变化,根据 scrollTop 的值调整导航栏的样式:

onShow: function (option) {
    const that = this;
    this.watchData('scrollTop', val => {
      if (scrollTop > 200) {
        that.setData({navBarStyle: 'mimi'});
      } else {
      	that.setData({navBarStyle: 'default'});
      }
    });
}

参考

https://blog.csdn.net/weixin_37680520/article/details/105875333
https://blog.csdn.net/Derrrrrd/article/details/124902590
https://blog.csdn.net/y13103192727/article/details/123397219


http://www.kler.cn/news/154973.html

相关文章:

  • Kubernetes(K8s)_16_CSI
  • 时序预测 | Python实现LSTM长短期记忆神经网络时间序列预测(多图,多指标)
  • C#基础学习--命名空间和程序集
  • C语言之实现贪吃蛇小游戏篇(2)
  • Flink(九)【时间语义与水位线】
  • 开源播放器GSYVideoPlayer + ViewPager2 源码解析
  • 12.1 二叉树简单题
  • Redis--12--Redis分布式锁的实现
  • 【双指针】283. 移动零
  • 内网穿透工具获取一个公网ip
  • 提高wordpress网站收录速度,设置wp后台的“更新服务”功能
  • 【经验总结】网络关闭但ECU没有休眠前如何网络唤醒
  • Java 使用zxing生成二维码
  • Mybatis实用教程之XML实现动态sql
  • springboot教师进修培训管理系统设计与实现java+jsp
  • PX4 Bug汇总
  • 【Python百练——第3练】矩形类及操作
  • 创建内存泄漏(js的问题)
  • 深入Os--静态链接
  • RabbitMQ 笔记
  • C#拼夕夕自动化登录,电商网页自动化操作。WebView2
  • CSS 选择器优先级,!important 也会被覆盖?
  • 堆排序算法
  • 选股的重要性、考虑的因素
  • MySQL-视图
  • 【学习笔记】GAN实战(基础)
  • 动态规划学习——回文串
  • day4 找到两个链表的交点
  • 用友U8 ERP和面粉行业专版系统接口集成方案
  • 国产AI边缘计算盒子,双核心A55丨2.5Tops算力