我正在将一些数据从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) {
...
}
}
...
);