在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ vue 不同界面的通信

vue 不同界面的通信

公共組件:bar.vue
里面有調(diào)用接口的一個(gè)方法。
methods: { wishSign() { } }

公共模板:cn.vue
全局調(diào)用了bar.vue
import VMbar from '~/components/base/bar';

界面:datail.vue
需求:我想在datail.vue里面的一個(gè)點(diǎn)擊事件里面觸發(fā)bar.vue里面的一個(gè)方法怎么做了。我用ref也獲取不到bar.vue里面的方法。主要是在公共模板:cn.vue全局調(diào)用了。我直接獲取不到bar.vue里面的方法。怎么才能在datail里面調(diào)用wishSign這個(gè)方法。

回答
編輯回答
久愛(ài)她

不建議這種調(diào)用方式。 這種調(diào)用方式對(duì)于他人來(lái)說(shuō)難以理解,難以調(diào)試和修改。

建議的做法是通過(guò)父子組件通信或者全局store的方式管理數(shù)據(jù), 數(shù)據(jù)的改變?nèi)ビ|發(fā)方法的調(diào)用

2018年7月13日 00:56
編輯回答
吢涼

建議使用vuex

2018年4月9日 11:22
編輯回答
柒槿年

有兩個(gè)方式:

1. 將全局組件放在某個(gè)全局環(huán)境中,比如:

// bar.vue
{
  methods: {
    wishSign() {
    
    }
  },
  beforeCreate() {
    Vue.prototype.$bar = this;
  }
}

// detail.vue
{
  methods: {
    onClick() {
      this.$bar.wishSign();
    },
  }
}

這種方式使得組件依賴全局環(huán)境中的 $bar 變量。算是比較強(qiáng)耦合的一種結(jié)構(gòu),不過(guò)通常來(lái)說(shuō)也不是太大的問(wèn)題,只要你不濫用。

2. 使用全局的事件總線

以前官方文檔介紹過(guò),現(xiàn)在找不到了。大概方案是聲明一個(gè) Vue 實(shí)例作為全局事件總線,所有注冊(cè)偵聽(tīng)器都通過(guò)它來(lái)進(jìn)行:

// event.js
export const bus = new Vue();

// bar.vue
import {bus} from './event';
{
  methods: {
    wishSign() {
    
    }
  },
  beforeCreate() {
    bus.on('some-event', this.wishSign);
  }
}

// detail.vue
import {bus} from './event';
{
  methods: {
    onClick() {
      bus.$emit('some-event');
    }
  }
}

這樣結(jié)構(gòu)耦合程度更低。

2017年7月16日 11:47