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', () => {
// 具体函数内容
})
}
通过emit和$on触发,执行其他组件的函数事件。