从插件中访问vuex模块数据

时间:2018-01-15 17:30:03

标签: vue.js vuex

我正在将一些数据从vuex商店移动到自己的模块中。其中大部分工作都很好,但我遇到了一个我似乎无法修复的问题。

我添加了一个插件,该插件也需要访问商店。 因此,在该插件的顶部,我们导入商店:

import store from '../store/store';

很棒 - 在该插件的下方,我正在我在服务上公开的方法中访问商店的数据:

hasPermission(permission) {
    return (store.state.authorization.permissions.indexOf(permission) >= 0);
}

请注意,授权现在是一个单独的模块,不再是根状态对象的一部分。

现在有趣的是,上面会返回一个错误告诉我indexOf不是一个函数。 但是,当我添加以下内容时:

hasPermission(permission) {
    console.log('Validating permission ' + permission);
    console.log(store.state);
    return (store.state.authorization.permissions.indexOf(permission) >= 0);
}

我注意到(1)控制台的输出是我所期望的,(2),我没有收到错误,我的菜单结构按预期动态构建......

所以至少可以说我有点困惑......

每次用户进行身份验证,注销或选择其他帐户时,都会更新authorization.permissions;在这些情况下,我们从服务器获取更新的权限并将其提交到商店,因此我们可以基于最新的权限构建我们的菜单结构。工作得很好,但我不确定我理解为什么这不诚实。

插件在安装中创建如下:

Vue.prototype.$security = new Vue(
    ...
    methods: {
        hasPermission: function(permission) {
            ...
        }
    }
    ...
);

0 个答案:

没有答案