我有一个定制的Vue指令来显示/隐藏一个基于角色的元素。
Vue.directive('role', (el, binding, vnode ) => {
const modifiers = binding.modifiers
const roles = vnode.context.$store.state.roles;
if (!roles.includes(binding.value) || (roles.includes(binding.value) && modifiers.not)) {
el.style.display = 'none';
vnode.elm.parentElement.removeChild(vnode.elm)
}
})这是模板,在v中。它们不适合管理员用户,我有
<span
v-role="'admin'"
>
{{ user.firstName }}, {{ user.lastName }}
</span>我遇到的问题是要么使用“不显示”,要么删除该孩子仍然抛出错误。
无法读取未定义的属性“firstName”
我可以检查模板中的属性,但是如果它不存在,是否有一种不呈现它的方法?
发布于 2020-07-07 15:55:06
您应该简单地添加安全措施:
<span v-role="'admin'">
{{ (user || {}).firstName }}, {{ (user || {}).lastName }}
</span>https://stackoverflow.com/questions/62776890
复制相似问题