微信小程序,Vue

微信小程序Wepy框架的三个事件交互($broadcast,$emit,$invoke)

$broadcast:

$broadcast事件是由父组件发起,所有子组件都会收到此广播事件,除非事件被手动取消。事件广播的顺序为广度优先搜索顺序,如上图,如果页面Page_Index发起一个$broadcast事件,那么按先后顺序依次接收到该事件的组件为:ComA、ComB、ComC、ComD、ComE、ComF、ComG、ComH。如下图

 

 

理解官方意思就是:如果通过当前组件进行$broadcast广播事件,那么就只有它的子组件能接收事件,它的父组件和兄弟组件是无法接收到消息。调用方式如下

        this.$broadcast('eventName', param1,param2,param3,......)

        然后在子组件的events里面定义eventName接收事件就行了,如下:

        events = {

            'eventName': (param1,param2......., $event:Event) => {

                }

        }

$emit

 $emit与$broadcast正好相反,事件发起组件的所有祖先组件会依次接收到$emit事件。如果组件ComE发起一个   $emit事件,那么接收到事件的先后顺序为:组件ComA、页面Page_Index。如下图:

 

 

 

理解官方的意思就是:如果通过当前组件进行$emit广播事件,那么就只有它的父组件能接收事件,它的子组件和兄弟组件是无法接收到消息。调用方式如下

        this.$emit('eventName', param1,param2,param3,......)

        然后在父组件的events里面定义eventName接收事件就行了,如下:

        events = {

            'eventName': (param1,param2......., $event:Event) => {

                }

        }

$invoke

$invoke是一个页面或组件对另一个组件中的方法的直接调用,通过传入组件路径找到相应的组件,然后再调用其方法。

比如,想在页面Page_Index中调用组件ComA的某个方法:

this.$invoke('ComA', 'someMethod', 'someArgs');

如果想在组件ComA中调用组件ComG的某个方法:

this.$invoke('./../ComB/ComG', 'someMethod', 'someArgs');

理解官方的意思就是:如果通过当前组件进行$invoke触发事件,如果父组件已经在components里面引入了子组件就可以直接通过invoke来单独向子组件发送事件;如果是子组件之间的事件交互,第一个参数就需要对应组件的路径。调用方式如下

父组件向子组件发送事件:

    this.$invoke('子组件,必须要单引号括起来', '子组件方法名称',  param1,param2,param3.......);

子组件间发送事件:

this.$invoke('子组件的相对路径', '子组件方法名称',  param1,param2,param3.......);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用腾讯地图的开放平台提供的 JavaScript API 实现在微信小程序中插入地图。以下是基本的步骤: 1. 在腾讯地图开放平台注册账号并创建应用,获取 key 值。 2. 在微信小程序中使用 npm 安装腾讯地图 JavaScript API: ``` npm install --save @tencent/maps ``` 3. 在小程序页面的 js 文件中引入腾讯地图 API: ``` import QQMapWX from '@tencent/maps' const qqmapsdk = new QQMapWX({ key: '你的key值' }) ``` 4. 在小程序页面的 wxml 文件中添加地图组件: ``` <map id="myMap" longitude="{{longitude}}" latitude="{{latitude}}" scale="{{scale}}" markers="{{markers}}" show-location="{{true}}"></map> ``` 5. 在小程序页面的 js 文件中设置地图的参数和标记点: ``` Page({ data: { longitude: 113.324520, latitude: 23.099994, scale: 14, markers: [{ iconPath: '/images/location.png', id: 0, latitude: 23.099994, longitude: 113.324520, width: 50, height: 50 }] }, onLoad: function () { // 获取当前位置并设置地图中心点为当前位置 wx.getLocation({ type: 'gcj02', success: (res) => { this.setData({ longitude: res.longitude, latitude: res.latitude }) } }) } }) ``` 这样就可以在微信小程序中插入腾讯地图了。详细的 API 文档可以参考腾讯地图开放平台的官方文档。 ### 回答2: 在微信小程序中,可以使用Vue插件来添加地图功能。首先,我们需要选择一个合适的地图插件,例如腾讯地图插件。 1. 在小程序的项目目录下创建一个新的文件夹,命名为"plugins"。 2. 在"plugins"文件夹中,可以将腾讯地图的插件文件(例如tencent-map.js)放置进来。 3. 根据微信官方文档的要求,在小程序的"app.json"文件中声明这个插件: ``` "plugins": { "tencentMap": { "version": "版本号", "provider": "提供者" } } ``` 4. 在Vue组件中引入腾讯地图插件,可以在组件的生命周期钩子"mounted"中引入地图: ```javascript mounted() { wx.getLocation({ type: 'gcj02', // 使用国测局坐标 success: (res) => { let latitude = res.latitude let longitude = res.longitude // 使用Vue插件,在页面中插入地图 let map = this.$plugins.tencentMap.createMapContext('map', { latitude: latitude, longitude: longitude, markers: [{ // 添加标记点 id: 0, latitude: latitude, longitude: longitude, title: '我的位置' }] }) map.showCallout({ // 显示标记点的气泡窗口 markerId: 0, zIndex: 1, content: '我的位置' }) }, fail: (err) => { console.log('获取位置失败', err) } }) } ``` 5. 在Vue组件的模板中添加一个"canvas"标签,用于显示地图: ```html <template> <view> <canvas id="map"></canvas> </view> </template> ``` 通过以上步骤,我们可以在微信小程序中使用Vue插件来插入地图,并设置地图的参数如经纬度、标记点等。当然,还可以根据具体需求添加更多的地图功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值