【发布时间】:2019-05-22 16:49:04
【问题描述】:
我需要销毁自定义指令中的元素,例如 v-if。 (如果条件失败,则禁止创建项目。)
我试试这个
export const moduleDirective: DirectiveOptions | DirectiveFunction = (el, binding, vnode) => {
const moduleStatus = store.getters[`permissions/${binding.value}Enabled`];
if (!moduleStatus) {
const comment = document.createComment(' ');
Object.defineProperty(comment, 'setAttribute', {
value: () => undefined,
});
vnode.elm = comment;
vnode.text = ' ';
vnode.isComment = true;
vnode.context = undefined;
vnode.tag = undefined;
if (el.parentNode) {
el.parentNode.replaceChild(comment, el);
}
}
};
但是这个选项不适合我。它不会中断组件的创建。
此代码从 DOM 中删除一个元素,但不破坏组件实例。
【问题讨论】:
-
不使用 vue 组件的渲染选项?
-
@perymimon 是的。我需要在没有初始化的情况下销毁一个元素。
-
@Mgorunuch,您找到解决问题的方法了吗?我也面临同样的事情。
标签: vue.js vuejs2 vue-component vuex vue-router