uts-event-bus.uvue 4.0 KB
Newer Older
X
xty 已提交
1 2 3 4 5 6
<template>
  <!-- #ifdef APP -->
  <scroll-view class="page-scroll-view">
  <!-- #endif -->
    <view>
      <button @click="JsOnUts">1. js监听uts消息</button>
7 8 9 10 11
      <button @click="emitFromUts">2. uts中触发监听</button>
      <button @click="emitUtsMessageUTSObject">2.1 uts中触发监听(UTSJSONObject)</button>
      <button @click="emitUtsMessages">2.2 uts中触发监听(多个参数)</button>
      <button @click="emitUtsMessageNoArgument">2.3 uts中触发监听(无参数)</button>
      <button @click="offUts">取消uts消息监听</button>
X
xty 已提交
12 13

      <button @click="UtsOnJS">1. uts监听js消息</button>
14 15
      <button @click="emitFormJS">2 .js中触发监听</button>
      <button @click="emitFormJSObject">2.1 js中触发监听(UTSJSONObject)</button>
X
xty 已提交
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
      <button @click="offJs">取消js消息监听</button>
      <button @click="clear">清空消息</button>

      <view class="box">
        <view>收到的消息:</view>
        <view>
          <view v-for="(item, index) in log" :key="index">{{ item }}</view>
        </view>
      </view>
    </view>
    <button @click="testAll">test all</button>
  <!-- #ifdef APP -->
  </scroll-view>
  <!-- #endif -->
</template>

<script>
  import {
    onJsMessage,
    offJsMessage,
36 37 38 39
    emitUtsMessage,
    emitUtsMessageUTSObject,
    emitUtsMessageNoArgument,
    emitUtsMessages,
X
xty 已提交
40 41 42 43 44 45 46 47 48 49 50 51 52 53
    getMessageChannel,
    getRevJsMessage,
    clearJsMessage,
    onJsMessageOnce,
  } from "@/uni_modules/uts-eventbus"


  export default {
    data() {
      return {
        log: [] as string[],
      }
    },
    methods: {
54 55 56 57 58 59 60 61 62
      fn(res : any, res2 : any) {
        if (res != null){
          console.log("on rev: " + JSON.stringify(res))
          this.log.push(res)
        }
        if (res2 != null) {
          console.log("on rev: " + JSON.stringify(res2))
          this.log.push(res2)
        }
X
xty 已提交
63 64 65 66 67 68 69 70 71 72 73 74 75
      },
      fn2(res : string) {
        this.log.push(res)
      },
      JsOnUts() {
        uni.$off(getMessageChannel(), this.fn)
        uni.$on(getMessageChannel(), this.fn)
      },
      offUts() {
        uni.$off(getMessageChannel(), this.fn)
      },
      emitFromUts() {
        emitUtsMessage("emit form uts")
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
      },
      emitUtsMessageUTSObject() {
        emitUtsMessageUTSObject({
            latitude: 39.951028,
            longitude: 116.354662,
            name: '金运大厦',
            address: '西直门北大街xx号'
          })
      },
      emitUtsMessages() {
        emitUtsMessages({
            latitude: 39.951028,
            longitude: 116.354662,
            name: '金运大厦',
            address: '西直门北大街xx号'
          }, "emit form uts")
      },
      emitUtsMessageNoArgument() {
        emitUtsMessageNoArgument()
X
xty 已提交
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
      },
      JsOnUtsOnce() {
        uni.$once(getMessageChannel(), this.fn2)
      },
      UtsOnJS() {
        onJsMessage("JsMessage")
      },
      UtsOnJSOnce() {
        onJsMessageOnce("JsMessage")
      },
      offJs() {
        offJsMessage("JsMessage")
      },
      emitFormJS() {
        clearJsMessage()
        uni.$emit("JsMessage", "emit form js")
        let msg = getRevJsMessage()
        console.log("message:"+msg)
        if (msg && msg.length){
          this.log.push(msg)
        }
116 117 118 119 120 121 122 123 124 125 126 127 128 129
      },
      emitFormJSObject() {
        clearJsMessage()
        uni.$emit("JsMessage", {
            latitude: 39.951028,
            longitude: 116.354662,
            name: '金运大厦form js',
            address: '西直门北大街xx号 from js'
          })
        let msg = getRevJsMessage()
        console.log("message:"+msg)
        if (msg && msg.length){
          this.log.push(msg)
        }
X
xty 已提交
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
      },
      clear() {
        clearJsMessage()
        this.log.length = 0
      },
      testAll() {
      	this.JsOnUts();
      	this.emitFromUts();
      	this.UtsOnJS();
      	this.emitFormJS();
      }
    },
  }
</script>

<style>
  .box {
    padding: 10px;
  }
</style>