当前位置: 首页 > 知识库问答 >
问题:

如何从文件加载json,并在VUE中将其设置为全局变量?

裴焱
2023-03-14

我对Vue是新来的。我想从一个登录表单中读取employeeID,并通过它加载一些按employeeID.json命名的json文件,比如(10000001.json,20000001.json),并将json对象设置为全局变量,以便在所有组件中轻松地访问它。

首先,我不知道如何动态加载json文件。使用import不起作用。有人建议使用require应该可以。但例子不多,不知道该把require放在哪里……

其次,在employeeId进入后,如何将json设置为全局的?我很困惑该把它放在哪里(是否放在导出默认值内部?是否放在方法内部?或者是否放在创建/挂载内部?)以及在哪里用这个或不用这个...

这是我的headernav.vue文件的脚本部分。

<script>
//**I placed them here now, it works, but employeeId is hard coded...
import json10000001 from "./json/10000001.json";
import json20000001 from "./json/20000001.json";
import json30000001 from "./json/30000001.json";
// var employeeId = employeeIdFromLogin;
var jsonForGlobal;
var employeeId = 10000001;
var jsonFileCurrentObj;
if (employeeId == "10000001") {
  jsonForGlobal = jsonFileCurrentObj = json10000001;
} else if (employeeId == "20000001") {
  jsonForGlobal = jsonFileCurrentObj = json20000001;
} else if (employeeId == "30000001") {
  jsonForGlobal = jsonFileCurrentObj = json30000001;
}

export default {
  // props:{
  //   employeeIdFromLogin: String,
  // },
  props:['employeeIdFromLogin'],
  jsonForGlobal,
  // employeeIdFromLogin,
  data() {
    return {
      docked: false,
      open: false,
      position: "left",
      userinfo: {},
      jsonFileCurrent: jsonFileCurrentObj,
      // employeeIdFromLogin: this.GLOBAL3.employeeIdFromLogin
      // jsonFile: currentJsonFile
    };
  },
  mounted() {
//**I tried put it here, not working well...
    // var employeeId = this.employeeIdFromLogin;
    // // var jsonForGlobal;
    // console.log("headernav.employeeIdFromLogin="+this.employeeIdFromLogin);
    // // var employeeId = 10000001;
    // var jsonFileCurrentObj;
    // if (employeeId == "10000001") {
    //   this.jsonForGlobal = this.jsonFileCurrentObj = json10000001;
    // } else if (employeeId == "20000001") {
    //   this.jsonForGlobal = this.jsonFileCurrentObj = json20000001;
    // } else if (employeeId == "30000001") {
    //   this.jsonForGlobal = this.jsonFileCurrentObj = json30000001;
    // }
  },
  methods: {
    switchPage(pageName) {
      this.$emit("switchPage", pageName);
    }
//**I don't know how to use the require...
    // var employeeId = 10000001;
    // getJsonFile(employeeId) {
    //   this.currentJsonFile = require("../assets/json/" + employeeId + ".json");
    // }
  }
};

共有1个答案

陆翔飞
2023-03-14

您可能希望使用vuex管理全局存储。但如果您不想包含Vuex,则有一种更简单的方法来拥有全局状态:

定义globalstore.js

// globalStore.js
export const globalStore = new Vue({
  data: {
    jsonForGlobal: null
  }
})

然后导入并在组件中使用:

import {globalStore} from './globalStore.js'
export default {
  props: ['employeeIdFromLogin'],
  data: function () 
    return {
      jsonLocal: globalStore.jsonForGlobal,
      jsonFileCurrent: null
    }
  },
  watch: {
    employeeIdFromLogin: {
      handler(newVal, oldVal) {
        const data = require('./json/' + this.employeeIdFromLogin + '.json')
        this.jsonFileCurrent = data
        globalStore.jsonForGlobal = data
      }
    }
  }
}
 类似资料:
  • 问题内容: 我正在一个项目上,我想让我的索引在滚动时加载更多内容。我想设置一个全局变量来保存页面已加载多少次。我的项目结构如下: 首先,我在中声明全局变量: 皮查姆(Pycharm)警告 在: 还有 我也引用了global-variable-and-python-flask 但我没有main()函数。在Flask中设置全局变量的正确方法是什么? 问题答案: 你没有在定义,只是在声明,所以就好像在说

  • 但是我想存储一些复杂的对象,像这样 context-param不可能做到这一点,我还能在Java或Spring中使用什么?

  • 问题内容: 我有一个bash.sh脚本: 其中config.json: 当我运行它时,我得到: ERR未知命令’}’ 如何从json文件正确设置json值? 问题答案: 如果你正在尝试设置 字符串 的值,关键看你的JSON文件的内容(或其他任何与此有关的,包括二进制),最简单的方法是使用选项来 阅读的最后一个参数 逐字的命令, 从。例如: 对于您的示例,它将存储: 要存储JSON数据的紧凑表示形式

  • 本文向大家介绍如何在函数中设置一个全局变量相关面试题,主要包含被问及如何在函数中设置一个全局变量时的应答技巧和注意事项,需要的朋友参考一下 python中的global语句是被用来声明全局变量的。

  • 本文向大家介绍vue 如何添加全局函数或全局变量以及单页面的title设置总结,包括了vue 如何添加全局函数或全局变量以及单页面的title设置总结的使用技巧和注意事项,需要的朋友参考一下 传统的设置title的方法是:document.title = ‘title' 但是这种写法在iOS的微信上是不兼容的 这里设置title的方法是通过在百度搜索的所谓黑科技,避免了安卓和iOS的不兼容写法 首

  • 大家好!我想做多朗登陆页。当您选择语言时,会出现select with LANGS,JS将文本替换为JSON文件中的另一个语言。但当我尝试加载JSON时,JSON和JS出现了问题。我读了很多指南,但没有任何帮助。我拥有的:有一个json文件-lang.json。以下是其中的一部分: 我有main.js文件,上面的JSON文件应该作为var导入。我使用了其他人的脚本:将本地JSON文件加载到变量中,