call-method-other.uvue 1.7 KB
Newer Older
H
hdx 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
<template>
  <view>
    <component1 ref="component1"></component1>
  </view>
</template>

<script>
  // 非easycom组件需import引用组件 component1.uvue
  import component1 from './component1.uvue'

  export default {
    components: {
      component1
    },
    data() {
      return {
雪洛's avatar
雪洛 已提交
17
        component1: null as ComponentPublicInstance | null
H
hdx 已提交
18 19 20 21
      }
    },
    onReady() {
      // 通过组件 ref 属性获取组件实例
雪洛's avatar
雪洛 已提交
22
      this.component1 = this.$refs['component1'] as ComponentPublicInstance;
H
hdx 已提交
23 24 25 26
    },
    methods: {
      callMethod1() {
        // 通过 $callMethod 调用组件的 foo1 方法
雪洛's avatar
雪洛 已提交
27
        this.component1!.$callMethod('foo1');
H
hdx 已提交
28 29 30
      },
      callMethod2() {
        // 通过 $callMethod 调用组件的 foo2 方法并传递 1个参数
雪洛's avatar
雪洛 已提交
31
        this.component1!.$callMethod('foo2', Date.now());
H
hdx 已提交
32 33 34
      },
      callMethod3() {
        // 通过 $callMethod 调用组件的 foo3 方法并传递 2个参数
雪洛's avatar
雪洛 已提交
35
        this.component1!.$callMethod('foo3', Date.now(), Date.now());
H
hdx 已提交
36 37 38
      },
      callMethod4() {
        // 通过 $callMethod 调用组件的 foo4 方法并传递 callback
雪洛's avatar
雪洛 已提交
39
        this.component1!.$callMethod('foo4', () => {
H
hdx 已提交
40 41 42 43 44 45
          console.log('callback')
        });
      },
      callMethod5() {
        // 通过 $callMethod 调用组件的 foo5 方法并接收返回值
        // 注意: 返回值可能为 null,当前例子一定不为空,所以加了 !
雪洛's avatar
雪洛 已提交
46
        const result = this.component1!.$callMethod('foo5', 'string1') as string;
H
hdx 已提交
47 48
        console.log(result); // string1
      },
H
hdx 已提交
49
      callMethodTest(text: string): string | null {
雪洛's avatar
雪洛 已提交
50
        const result = this.component1!.$callMethod('foo5', text) as string;
H
hdx 已提交
51 52
        return result;
      },
H
hdx 已提交
53 54 55
    }
  }
</script>