将vue页面的变量挂载到全局

注意:如果全局变量只初始化一次,不再进行二次的赋值,则不需要进行监听操作

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
    }
  },

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值