首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从vue指令中访问getter

从vue指令中访问getter
EN

Stack Overflow用户
提问于 2019-06-14 02:24:30
回答 1查看 894关注 0票数 0

我正在编写一个简单的vue指令,如果权限与Vuex存储中的用户权限匹配,则返回true。但是我不能正确地访问这个州。

我能够从Vue组件中毫无问题地访问getter store.state.user.user.permissions和getter store.getters.currentUserPermissions

代码语言:javascript
复制
import store from './store/index';

Vue.directive('can',{
    inserted(el,binding){
        let permissions = store.getters.currentUserPermissions;

        console.log(permissions);
        if(!permissions.includes(binding.value)){
            el.style.display = 'none';
        }
    }
});

控制台返回undefined

但是当我在控制台中登录store.getters时,我得到:

代码语言:javascript
复制
{}
currentUserPermissions: (...)
> get currentUserPermissions: f ()
> __proto__: Object

如何访问currentUserPermissions?

EN

回答 1

Stack Overflow用户

发布于 2020-11-18 05:30:32

我经历了同样的麻烦,并设法找到了解决方案。我会把它留在这里,以帮助其他可能来寻找它的人。

指令参数的第三个参数vnode可以通过其$context属性访问存储区。因此,代码将如下所示:

代码语言:javascript
复制
Vue.directive('can',{
  inserted(el,binding,vnode){
    const store = vnode.context.$store;
    let permissions = store.getters.currentUserPermissions;

    console.log(permissions);
    if(!permissions.includes(binding.value)){
      el.style.display = 'none';
    }
  }
});

请注意,如果所需的getter位于模块内,则必须以不同的方式访问它:

代码语言:javascript
复制
store.getters['<module>/<getter>']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56586529

复制
相关文章

相似问题

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