Вы можете использовать пользовательскую директиву и присоединить ее к событию click (в хуке bind
).
РЕДАКТИРОВАТЬ: изменено, чтобы использовать контекст данных элемента для хранения активного флага класса
Просто быстрый пример:
Vue.directive("toggle-active", {
bind: function(el, binding, vnode) {
el.addEventListener(
"click",
() => {
let active = vnode.context.class_active;
active = !active;
vnode.context.class_active = active;
if (!active) {
el.classList.remove("active");
el.classList.add("not-active");
} else {
el.classList.remove("not-active");
el.classList.add("active");
}
},
false
);
}
});