美文网首页
uniapp 父组件与 renderjs 子组件通信

uniapp 父组件与 renderjs 子组件通信

作者: 莫问前程F6 | 来源:发表于2022-03-17 17:59 被阅读0次

父组件向子组件通信

使用 prop 传递数据,子组件监听数据变化

<view id=“map” :prop=“control” :change:prop=“map.update”></view>

子组件向子组件通信

父组件创建回调函数,子组件特殊方法调用

// 向父组件传参
UniViewJSBridge.publishHandler(‘onWxsInvokeCallMethod’, {
  cid: this._$id,
  method: ‘renderjsCall’,
  args: {
    type: ‘1’,
    name: ‘2’
  }
})

示例

<template>
  <view class="map-container">
    <view id="map" :prop="control" :change:prop="map.update" @click="map.click"></view>
  </view>
</template>
<script>
export default {
  data() {
    return {
      b_ak: '', // 百度授权key 浏览器端
      control: {
        location: ''
      }
    };
  },
  methods: {
    // 获取当前位置
    getLocation() {
      uni.getLocation({
        type: 'gcj02',
        altitude: true,
        success: (res) => {
          let location = res.longitude + ',' + res.latitude;
          uni.request({
            url: `http://api.map.baidu.com/geoconv/v1/?coords=${location}&from=3&to=5&ak=${this.ak}`,
            success: (res) => {
              this.control.location =
                res.data.result[0].x + ',' + res.data.result[0].y;
            }
          });
        }
      });
    },
    renderjsCall(options) {
      console.log('renderjsCall回调');
      console.log(options);
    }
  },
  mounted() {
    this.getLocation();
  }
};
</script>
<script module="map" lang="renderjs">
import {
  BaiduMap
} from "@/utils/BaiduMap.js";
export default {
  data() {
    return {
      b_ak: '', // 百度授权key 浏览器端
    }
  },
  props: ['control'],
  watch: {
    'control.location': 'location'
  },
  methods: {
    location(val) {
      if (val == ") {
        return false
      }
      this.lng = val.split(',')[0];
      this.lat = val.split(',')[1];
      this.init()
    },
    update() {
      console.log('update');
    },
    init() {
      BaiduMap(this.b_ak).then(() => {
        // 实例化地图
        this.map = new BMap.Map('map');
        // 初始化地图,设置中心点坐标和地图级别
        this.map.centerAndZoom(
          new BMap.Point(this.lng, this.lat),
          15
        );
        //开启鼠标滚轮缩放
        this.map.enableScrollWheelZoom(true);
        // 向父组件传参
        UniViewJSBridge.publishHandler('onWxsInvokeCallMethod', {
          cid: this._$id,
          method: 'renderjsCall',
          args: {
            type: '1',
            name: '2'
          }
        })
      });
    }
  }
}
</script>
<style lang="scss" scoped>
.map-container {
  width: 100%;
  height: 100%;
}
#map {
  width: 100%;
  height: 100%;
}
</style>

相关文章

  • uniapp 父组件与 renderjs 子组件通信

    父组件向子组件通信 使用 prop 传递数据,子组件监听数据变化 子组件向子组件通信 父组件创建回调函数,子组件特...

  • Vue组件间通信,与服务器端通信

    组件间通信 父组件与子组件通信: props down 子组件与父组件通信:events up 若父组件要想获取子...

  • React组件通信

    1.父组件与子组件通信父组件传值到子组件props。2.子组件与父组件通信父组件向子组件传一个函数,子组件将自己的...

  • Angular5 父子组件之间的通信

    一、父组件向子组件通信 父组件: 子组件: 二、子组件向父组件通信 父组件: 子组件:

  • 组件通信

    组件通信分为几种: 父组件给子组件通信 子组件给父组件通信 兄弟组件通信 1.父组件给子组件通信 法一...

  • vue父组件调用子组件的方法

    vue组件与组件通信有如下几种情况: 平行组件父组件与子组件子组件与父组件 它们之间通信有几种方法有: props...

  • React学习笔记(四)

    组件通信 父组件与子组件通信 父组件将自己的状态传递给子组件,子组件当做属性来接收,当父组件更改自己状态的时候,子...

  • ReactNative组件间的通信

    父组件向子组件通信 父组件向子组件传值 父组件向子组件传递方法 子组件向父组件通信 子组件向父组件传值 子组件向父...

  • vue组件通信,中央事件总线

    vue 组件通信分为父组件与子组件通信、子组件与父组件通信、非父子关系组件通信三种 第一种大家都知道用props,...

  • React学习笔记(三)-组件通信

    父子组件的通信 1.父 => 子父组件向子组件的通信是通过props。较为简单,代码如下 如果父组件与子组件之间不...

网友评论

      本文标题:uniapp 父组件与 renderjs 子组件通信

      本文链接:https://www.haomeiwen.com/subject/hdtbdrtx.html