vue.js - Vuex 返回布尔值?
问题描述
我正在尝试创建一个可以在名为 hasPermission 的模板中使用字符串调用的函数。但是,当我调用它时,vuex 返回一个 promise 对象。无论如何我可以让它返回一个布尔值吗?
hasPermission({ state }, permission) {
for (var i = 0; i < state.user.permissions.length; i++) {
var perm = state.user.permissions[i];
if (perm.name == permission) {
return true;
}
}
return false;
}
我希望能够像 v-if="hasPermission("test") 那样简单地调用它,然后根据响应进行展示。但是我很难做到这一点。希望您能提供任何建议给 :)
解决方案
你可以制作hasPermission
一个方法风格的getter:
getters: {
hasPermission: (state) => (permission) => {
for (var i = 0; i < state.user.permissions.length; i++) {
var perm = state.user.permissions[i];
if (perm.name == permission) {
return true;
}
}
return false;
}
}
用于mapGetters
将其包含在组件中:
import { mapGetters } from 'vuex';
computed: {
...mapGetters(['hasPermission'])
}
在模板中使用它,例如:
v-if="hasPermission('test')"
请记住,这些 getter 不像普通的 getter 那样被缓存,但动作也不是。
这是一个演示
推荐阅读
- wordpress - 我正在尝试创建我的 wp 文件夹的 zip,但出现错误
- docker - 在 docker run 中包含环境变量和捆绑的 javascript
- c++ - 使用 RTTI 克隆唯一指针向量
- python - PyInstaller 权限被拒绝,然后找不到命令 Mac Mojave
- python - 如何将日期时间应用于存储在字典中的数据框中的列?
- flask - 在 OAuth2 中,如果一个客户端不应该共享其访问令牌,那么多个客户端如何访问同一个资源?
- .htaccess - 基于引用 url 查询字符串的重定向
- c - 如何在不同位置使用用 C 编写的包中的函数
- asp.net-core - 还有一个 maxAllowedContentLength 问题
- salesforce - 在 VF 电子邮件模板中创建按钮以重新打开案例