当前位置:   article > 正文

微信小程序实现数值监听(页面和组件属性)_微信小程序怎么监听页面数据变化

微信小程序怎么监听页面数据变化

简介

目前文章主要介绍对页面属性值的监听以及组件属性值的监听。需要异页面监听数据,请跳转至另一个文章介绍

为什么需要监听属性值

当需要通过一个属性变化时候,需要计算相应的方法等。pc网站经常需要监听属性,那么小程序应该怎么去实现?

实现方法

1、首先创建公共的watch.js

  1. export function setWatcher(page) {
  2. let data = page.data;
  3. let watch = page.watch;
  4. Object.keys(watch).forEach(v => {
  5. let key = v.split('.');
  6. let nowData = data;
  7. for (let i = 0; i < key.length - 1; i++) {
  8. nowData = nowData[key[i]];
  9. }
  10. let lastKey = key[key.length - 1];
  11. let watchFun = watch[v].handler || watch[v];
  12. let deep = watch[v].deep;
  13. observe(nowData, lastKey, watchFun, deep, page);
  14. })
  15. }
  16. function observe(obj, key, watchFun, deep, page) {
  17. var val = obj[key];
  18. if (deep && val != null && typeof val === 'object') {
  19. Object.keys(val).forEach(childKey => {
  20. observe(val, childKey, watchFun, deep, page);
  21. })
  22. }
  23. Object.defineProperty(obj, key, {
  24. configurable: true,
  25. enumerable: true,
  26. set: function(newVal) {
  27. watchFun.call(page, newVal, val);
  28. val = newVal;
  29. if (deep) {
  30. observe(obj, key, watchFun, deep, page);
  31. }
  32. },
  33. get: function() {
  34. return val;
  35. }
  36. })
  37. }
  38. module.exports = {
  39. setWatcher: setWatcher
  40. }

2、在页面引用公共的watch.js。

import { setWatcher } from '../../utils/watch';

3、初始化监听方法

setWatcher(this);//可以放进onload或者input里面等

4、写入监听方法

  1. //page页面
  2. watch: {
  3. val(v) {
  4. console.log(v)
  5. },
  6. count: {//监听count属性值
  7. handler(v,o) {
  8. console.log('新值:'+v,'旧值:'+o)
  9. if(v!==o){
  10. console.log('被改了')
  11. }else{
  12. console.log('没改')
  13. }
  14. },
  15. deep: true
  16. }
  17. },
  18. //组件就调用observe方法

小结

微信小程序监听属性值非常的简单,只需要调用公共的js然后监听属性值即可。大大提高开发的效率。有不足之处望指正修改,一起探讨哦~!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/220675
推荐阅读
相关标签
  

闽ICP备14008679号