首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在其他js文件中使用mixin vuejs变量(常量)?

如何在其他js文件中使用mixin vuejs变量(常量)?
EN

Stack Overflow用户
提问于 2020-01-14 13:02:47
回答 2查看 669关注 0票数 1

我尝试在.js项目中使用混合,我可以在vuejs文件中使用常量,但不能在vuejs文件中使用。(我想在myMixin.js文件中定义常量,因为在vue文件中也会使用它。)

代码语言:javascript
复制
// myMixin.js

const ROLES = {
  admin: 'ADMIN'
},
const OPTIONS = {
  ...
}

export default {
  data() {
    return {
      ROLES: ROLES,
      ...
    }
  }
}
代码语言:javascript
复制
// main.js

import myMixin from '@/common/myMixin' 
...

Vue.mixin(myMixin)
...
代码语言:javascript
复制
// router.js

...
if(store.state.account.role !== ROLES.admin) { // ROLES.admin: NOT WORKING HERE.
   next('/403')
}
...
代码语言:javascript
复制
// Header.vue

<template>
  <v-list-group
    :value='false'
    no-action
    v-if='$store.state.account.role === ROLES.admin'   // working perfectly

...
</template>
EN

回答 2

Stack Overflow用户

发布于 2020-01-14 13:11:06

您应该从export模块中混合这些常量,以便可以将它们import到其他普通的JavaScript模块中使用。

代码语言:javascript
复制
// myMixin.js

export const ROLES = {
  admin: 'ADMIN'
}

export const OPTIONS = {
  ...
}

export default {
  data() {
    return {
      roles: ROLES,
      ...
    }
  }
}
代码语言:javascript
复制
// router.js

import { ROLES } from './myMixin.js'

...
if (store.state.account.role !== ROLES.admin) {
  next('/403')
}
...

如果您不喜欢将常量导入到每个模块中的想法,那么您可以将它们分配到全局上下文(window)中,这将使它们在全局可用,但这违背了最初使用模块的目的,我不推荐这样做。

代码语言:javascript
复制
// myMixin.js

window.ROLES = {
  admin: 'ADMIN'
}

window.OPTIONS = {
  ...
}
票数 1
EN

Stack Overflow用户

发布于 2020-01-14 13:35:47

我解决了这个问题,但我不确定这是不是一个正确的方法。如果你有更好的想法,请和我分享。

代码语言:javascript
复制
// router.js

import myMixin from '@/common/myMixin'

console.log(myMixin.data().ROLES.admin)   // 'ADMIN'
if(store.state.account.role !== myMixin.data().ROLES.admin) {
   next('/403')
}
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59727758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档