注意:如果全局变量只初始化一次,不再进行二次的赋值,则不需要进行监听操作
step1 ,在main.js声明全局变量
new Vue({
el: '#app',
router,
components: { App },
data() {
return {
// 定义全局变量
selectList: new Map()
}
}
})
setp2 ,在组件中获给该全局变量赋值
// 获取下拉信息
getSeletList() {
this.systemSeletMap = new Map()
listSlectData({}).then(({ data }) => {
const selectList = data.list.filter(
e => e.language == this.$i18n.locale
)
const newArr = selectList.map(val => {
if (this.systemSeletMap.get(val.category) == undefined) {
const tempArray = [val]
this.systemSeletMap.set(val.category, tempArray)
} else {
const mapVal = this.systemSeletMap.get(val.category)
mapVal.push(val)
}
})
// ********为全局变量赋值**********
this.$root.selectList = this.systemSeletMap
})
},
step3 ,在组件中使用全局变量
created() {
this.getData()
this.getUserList()
// **********使用全局变量***********
this.taList = this.$root.selectList.get('tastate')
this.statusList = this.$root.selectList.get('projectState')
}
注意:需要在组件中监听变量的变化
watch: {
'$root.selectList': {
handler() {
this.taList = this.$root.selectList.get('tastate')
this.statusList = this.$root.selectList.get('projectState')
},
deep: true
}
},