vue.js - Nuxtjs 指令不能在 v-btn 上运行 v-can
问题描述
我像这样创建一个插件permission.js。
import Vue from "vue";
export default function({ store }) {
Vue.directive("can", function(el, binding) {
console.log(store.state.permissions.indexOf(binding.value) !== -1); _//true_
return store.state.permissions.indexOf(binding.value) !== -1;
});
}
加载插件喜欢
plugins: [{ src: "~/plugins/permission", ssr: true }],
并像这样使用
<button v-can="'add-customer'">You can edit this thing</button>
它不能正常工作。这里有什么问题?
解决方案
更改您的 permission.js 使其看起来像此代码。它可以正常工作。
import Vue from "vue";
export default function({ store }) {
Vue.directive("can", function(el, binding, vnode) {
if (store.state.permissions.indexOf(binding.value) === -1)
{
const comment = document.createComment(" ");
Object.defineProperty(comment, "setAttribute", {
value: () => undefined
});
vnode.elm = comment;
vnode.text = " ";
vnode.isComment = true;
vnode.context = undefined;
vnode.tag = undefined;
vnode.data.directives = undefined;
if (vnode.componentInstance) {
vnode.componentInstance.$el = comment;
}
if (el.parentNode) {
el.parentNode.replaceChild(comment, el);
}
}
});
}
推荐阅读
- powershell - 使用 PowerShell 将 \x00 (ASCII 0 , NUL) 替换为空字符串以获得巨大的 csv
- regex - 什么正则表达式将点分隔的字符串拆分为任意数量的捕获组
- php - 使用 Laravel Passport 在 Postman 中收到 400 错误请求
- javascript - 井字检查器
- mysql - DOTNET 5.0.3 DBContext 没有 FromSqlRaw 方法
- reactjs - 如何在新的 Storybook 组件上发送警报?
- reactjs - React TinyMce 未捕获错误:节点不能为空或未定义
- matlab - 如何固定变量的范围?
- html - 我正在尝试让我的表单使用(弹性盒)空间,但它在弹性盒中不起作用
- javascript - Angular:我无法显示使用 Base64 字符串创建的文件中的图像