angular框架的ts文件怎么和js进行数据通讯

上篇说到我要做地图搜索功能,angular引用第三方js插件遇到的问题_Bonny雨曦的博客-CSDN博客

我将地址搜索出来之后还需要将搜索到的经纬度通过rpc发送给后端做一些处理,所以我需要js和ts之间有数据通讯,也就是js需要把获取到的经纬度返回给ts。

我想利用localStorage来实现。于是我在js里用了

localStorage.setItem('leafletSearch',[cord])

在ts用了

 window.addEventListener('storage', _ => this.readLocalStorage())

发现根本监听不到。后来多番百度之后才知道,在同一个页面内,localStorage改变的时候这样是监听不到的,需要在不同页面这样写才可以听得到。

经过查阅资料,我找到了这个

 

于是我在js中重写了事件,将事件的名字改为leafletMap,要拿到的值放到event里的leafletSearch中

 let event = new Event("leafletMap");
 event.leafletSearch = [cord[1], cord[0]];
window.dispatchEvent(event);

其中window.dispatchEvent(event);是抛出事件。

然后在ts中通过监听leafletMap来拿到数据。这里不懂为什么直接event.leafletSearch是找不到leafletSearch的,因为我这个ts是个子组件,所以我通过leafletSearch将整个event发送给了父组件。

 window.addEventListener('leafletMap', event => {
            this.leafletSearch.emit(event)
        }, false)

在父组件中我再通过.就能获取到数据了。

子组件要定义一下这个事件的输出

然后在父组件的HTML页面绑定一下方法

<app-leaflet-map [mapId]="mapId" [is_edit]="is_edit" (leafletSearch)="get_leafletSearch($event)" (address)="get_address($event)" [is_gps]="is_gps"> </app-leaflet-map>

 

 然后在父组件的逻辑处理的ts文件中获取数据

以上就完成了从js中获取到数据,然后在ts中处理逻辑~ 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bonny雨曦

码字不易,多多鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值