如何在Nuxt中定义全局变量以在任何地方访问

Mojtaba Barari

当我开始扩展我的应用程序时,我发现了一个大问题!!我正在开发没有的多语言双向应用程序i18n基本上我有一个像下面这样的语言json文件:

{
  "fa":{
    "dir": "rtl",
    // ....
  },
  "en":{
    "dir": "ltr",
    //....
  }
}

我将其以我的vuex状态存储在nuxtInitServerlang上。但是我有两个问题。

首先,如何在我的scss文件中访问它以更改字体系列?

第二,如何在我的插件中访问它?至于插件,这是我的解释:链接到问题

顺便说一句,有什么方法可以在nuxt中定义一个全局变量,以便在任何地方都可以访问,并且当然可以更改(不是像env这样的静态变量)。例如,当我更改语言时,能够访问.js和.scss文件中的当前语言。

这里的更新是我需要访问存储的实际插件代码:

import Vue from 'vue'
import { required, email , alpha , alpha_spaces , numeric , confirmed } from 'vee-validate/dist/rules'
import { extend, ValidationObserver, ValidationProvider, setInteractionMode } from 'vee-validate'
import { store } from 'vuex'

Vue.prototype.$something= function (){
    let lang = store.state.lang
}

setInteractionMode('eager')

extend('required', {
    ...required,
    message: `{_field_} ${$lang.error_required}` // this is were i'm gonna use my vuex state
})
extend('email', email)
extend('alpha', alpha)
extend('numeric', numeric)
extend('alpha_spaces', alpha_spaces)
extend('confirmed', confirmed)
extend("decimal", {
    validate: (value, { decimals = '*', separator = '.' } = {}) => {
        if (value === null || value === undefined || value === '') {
            return {
                valid: false
            };
        }
        if (Number(decimals) === 0) {
            return {
                valid: /^-?\d*$/.test(value),
            };
        }
        const regexPart = decimals === '*' ? '+' : `{1,${decimals}}`;
        const regex = new RegExp(`^[-+]?\\d*(\\${separator}\\d${regexPart})?([eE]{1}[-]?\\d+)?$`);

        return {
            valid: regex.test(value),
        };
    },
    message: '{_field_} ' + ''
})
Vue.component('ValidationProvider', ValidationProvider);
Vue.component("ValidationObserver", ValidationObserver);
托斯滕·科尔布
  1. 您无法在Scss代码中访问javascript变量。但是,您可以为每个语言环境定义一个Css类,然后将正确的类设置为在布局文件中具有计算属性的主div。
<template>
  <div :class="containerLangClass">
    <nuxt />
  </div>
</template>
<script>
export default {
  computed: {
    containerLangClass() {
      return "container-" + this.$store.getters.lang;
    }
  }
};
</script>

<style lang="scss">
.container-fa {
  font-family: "Franklin Gothic Medium", "Arial Narrow", Arial, sans-serif;
}
.container-en {
  font-family: "Gill Sans", "Gill Sans MT", Calibri, "Trebuchet MS", sans-serif;
}
</style>
  1. 您可以在插件中导入vuex存储,并在自定义方法,指令和co中使用它。但是我认为您想在创建插件之前访问存储值。

所以你不能只导入商店

import {store} from './store';

并使用其值,例如

store.getters.lang

因为此时存储尚未初始化。

更新当然,您可以在自定义函数中使用商店吸气剂,动作等,例如:

import Vue from "vue";

Vue.prototype.$something = function (){
            
let lang = this.$store.getters.lang; //...etc

        }

更新2要在自定义验证消息中使用商店,您可以添加一个mixin,在其中将验证添加到已挂接的挂钩中。此时,您可以访问vuex商店。

插件代码:

import Vue from "vue";
import { extend } from "vee-validate";
import { required } from "vee-validate/dist/rules";

Vue.mixin({
  mounted() {
    extend("required", {
      ...required,
      message: fieldName => {
        return `${fieldName} ${this.$store.getters.$lang.error_required}`;
      }
    });
  }
});

请注意,每次调用mount时都会调用此代码。因此,我建议您仅在需要的页面中使用此验证。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在任何地方运行Appimage?

来自分类Dev

Dagger 2 如何在任何地方访问相同的组件

来自分类Dev

如何在jmeter中声明全局函数并在beanshell中的任何地方使用

来自分类Dev

如何修复 - 在 Node.js 中 Promise { <pending> } 并在任何地方将其用作变量

来自分类Dev

用户专有信息可在任何地方访问。如何保护它?

来自分类Dev

如何使我的批处理代码成为我可以在任何地方访问的命令?

来自分类Dev

如何在任何地方从另一个类调用函数

来自分类Dev

如何在SD卡上安装实时ISO,以便在任何地方引导?

来自分类Dev

如何在实现 HandlerInterceptor 的类中创建对象以从任何地方访问它以获取该请求

来自分类Dev

是类变量存储数据以便在php中的任何地方访问?

来自分类Dev

如何在类中定义SQL Server连接字符串并在项目中的任何地方使用?

来自分类Dev

如何从任何地方访问OneNote笔记本?

来自分类Dev

如何从任何地方访问Zoo组件数据

来自分类Dev

如何从任何地方访问Kubernetes上安装的服务?

来自分类Dev

如何加载图像并从任何地方访问它?

来自分类Dev

从Java中的任何地方访问方法

来自分类Dev

我们如何使用未存储在任何地方的密码访问数据库

来自分类Dev

我们如何使用未存储在任何地方的密码访问数据库

来自分类Dev

如何通过在 app.module 中指定它来在任何地方使用自定义指令?

来自分类Dev

在Linux内核中调用了trace_sched_wakeup,但似乎没有在任何地方定义它吗?

来自分类Dev

在Linux内核中调用了trace_sched_wakeup,但似乎没有在任何地方定义它吗?

来自分类Dev

PHP如何在页面上的任何地方显示变量

来自分类Dev

如何在不将Excel文件存储在任何地方的情况下读取Excel文件并在MVC的Grid中填充其数据?

来自分类Dev

为什么Xcode允许我在任何地方声明C变量?

来自分类Dev

如何使AlertDialog显示在android应用中的任何地方?

来自分类Dev

自定义代码折叠-我想在任何地方折叠代码(Notepad ++)

来自分类Dev

Java是否在任何地方定义其原始类型的大小?

来自分类Dev

是否在任何地方为bash定义了终端颜色转义序列?

来自分类Dev

在哪里定义常量并在任何地方使用它们?

Related 相关文章

  1. 1

    如何在任何地方运行Appimage?

  2. 2

    Dagger 2 如何在任何地方访问相同的组件

  3. 3

    如何在jmeter中声明全局函数并在beanshell中的任何地方使用

  4. 4

    如何修复 - 在 Node.js 中 Promise { <pending> } 并在任何地方将其用作变量

  5. 5

    用户专有信息可在任何地方访问。如何保护它?

  6. 6

    如何使我的批处理代码成为我可以在任何地方访问的命令?

  7. 7

    如何在任何地方从另一个类调用函数

  8. 8

    如何在SD卡上安装实时ISO,以便在任何地方引导?

  9. 9

    如何在实现 HandlerInterceptor 的类中创建对象以从任何地方访问它以获取该请求

  10. 10

    是类变量存储数据以便在php中的任何地方访问?

  11. 11

    如何在类中定义SQL Server连接字符串并在项目中的任何地方使用?

  12. 12

    如何从任何地方访问OneNote笔记本?

  13. 13

    如何从任何地方访问Zoo组件数据

  14. 14

    如何从任何地方访问Kubernetes上安装的服务?

  15. 15

    如何加载图像并从任何地方访问它?

  16. 16

    从Java中的任何地方访问方法

  17. 17

    我们如何使用未存储在任何地方的密码访问数据库

  18. 18

    我们如何使用未存储在任何地方的密码访问数据库

  19. 19

    如何通过在 app.module 中指定它来在任何地方使用自定义指令?

  20. 20

    在Linux内核中调用了trace_sched_wakeup,但似乎没有在任何地方定义它吗?

  21. 21

    在Linux内核中调用了trace_sched_wakeup,但似乎没有在任何地方定义它吗?

  22. 22

    PHP如何在页面上的任何地方显示变量

  23. 23

    如何在不将Excel文件存储在任何地方的情况下读取Excel文件并在MVC的Grid中填充其数据?

  24. 24

    为什么Xcode允许我在任何地方声明C变量?

  25. 25

    如何使AlertDialog显示在android应用中的任何地方?

  26. 26

    自定义代码折叠-我想在任何地方折叠代码(Notepad ++)

  27. 27

    Java是否在任何地方定义其原始类型的大小?

  28. 28

    是否在任何地方为bash定义了终端颜色转义序列?

  29. 29

    在哪里定义常量并在任何地方使用它们?

热门标签

归档