js实现简易watch功能(项目实战)

   最近笔者在写项目的时候遇到一些问题,因为项目需求要写一个h5嵌入到小程序里面,h5主要用到了leaflet和uni的sdk,那有没有办法让这两部分实现通信呢?

 首先是uni的部分

document.addEventListener('UniAppJSBridgeReady', function () {
   ... // 此处是执行的uni代码部分,可以执行部分uni的方法,可以监听dom事件
})

然后是地图部分

                                label.on('click', function (e) {
                                    // 这里执行地图标注点击事件
              
                                });

那有没有方法在点击标注的时候执行uni的方法呢?

  我首先想到的是通过函数执行,好家伙根本定义不了函数。然后就只能通过监听来执行。好开始行动

// 目标对象,我们希望监视它的变化
 let userData = { name: "Alice", age: 30 };

对象里面的内容随便定义就行,我们的目标是获得一个变化来执行事件,现在大的要来了

        // 执行uniapp的操作
        document.addEventListener('UniAppJSBridgeReady', function () {
            // 使用Proxy包装目标对象
            userData = new Proxy(userData, {
                set(target, prop, value) {
                    // 在值改变时执行的逻辑
                    console.log(`属性 '${prop}' 正在更改为 ${value}`);
                    target[prop] = value;
                    uni.navigateTo({
                       url:'' //这里放路由地址或者其他的uni操作
                    })
                }
            });
        });

这里我们通过Proxy来监听目标对象的变化来监听。

好又回到我们之前的地图操作

                                label.on('click', function (e) {
                                        userData.name = "test";
                                    }
                                });

这里随便设置新值就能执行到uni的操作了,可以加上自己的业务来加值

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值