Vue配置全局变量,配置监听回调

1.自定义一个全局变量js文件,命名为g_data

// 全局变量对象
var g_data = {
  dateTime: null
}

export default g_data

2.在main.js中通过prototype挂载到vue上

// 全局变量
import g_data from '@/utils/g_data.js'
Vue.prototype.g_data = g_data

至此已经可以使用this.g_data 来访问全局对象了。

需要监听回调,修改g_data.js 为:

// 全局变量对象
var g_data = {
  dateTime: null
}
import Vue from 'vue'
// 定义属性存储
var dateTime_value = new Date()

/*  父子组件事件触发搬运车 */
var eventBus = new Vue()
Vue.prototype.g_bus = eventBus

/* 定义每个属性的监听事件 */
const keys = Object.keys(g_data)
keys.forEach(objItem => {
  Object.defineProperty(g_data, objItem, {
    get: function() {
      return dateTime_value
    },
    set: function(newValue) {
      dateTime_value = newValue
      eventBus.$emit(`watch_${objItem}`, newValue)
    }
  })
})

export default g_data

3.在vue组件中使用场景:

  created() {
    // 回调执行函数 监控命名规则为 watch_+变量名
    this.g_bus.$on('watch_dateTime', () => {
      // 具体函数内容
    })
  }

通过store配置全局变量太麻烦了,而且监听起来也麻烦 要同时用的computed和watch两个配置属性。本次覆盖额外知识点事件搬运车,也就是g_bus ,通过emit和$on触发,执行其他组件的函数事件。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容