首页 > 解决方案 > Vue 从指令中访问“on”和“class”指令

问题描述

我想将多个指令组合在一个自定义指令中,如下所示model

const model = Vue.directive('model')

Vue.directive('custom', {
    bind(el, binding, vnode, oldVnode) {
        // do custom directive stuff
        // modify binding for model

        if (model.bind)
            model.bind(el, binding, vnode, oldVnode)
    },
    inserted(el, binding, vnode, oldVnode) {
        if (model.inserted)
            model.inserted(el, binding, vnode, oldVnode)
    },
    update(el, binding, vnode, oldVnode) {
        if (model.update)
            model.update(el, binding, vnode, oldVnode)
    },
    componentUpdated(el, binding, vnode, oldVnode) {
        if (model.componentUpdated)
            model.componentUpdated(el, binding, vnode, oldVnode)
    },
    unbind(el, binding, vnode, oldVnode) {
        if (model.unbind)
            model.unbind(el, binding, vnode, oldVnode)
    }
})

但不幸的是,只有modelandshow可以通过Vue.directiveand not onor获得class。据我所知,其他指令正在以某种方式被修补并且我无法访问。

我在 webpack 环境中,想知道是否有办法访问其他指令。即使它是hacky。

谢谢

标签: vue.jsvue-directives

解决方案


您可以使用访问和修改class元素的

el.className += ' myClass'

如果您只需要查看上面的类,请使用 el.classList

要简单地查看元素上可用的所有选项console.log({el}),您还将获得on...

注意 myClass 之前的空格是必需的。至于为什么,自己做英文。。


推荐阅读