Как определить события Vue в методе рендеринга с помощью createElement

Я использую ElementUi NavMenu, и рендеринг функции с createElement Метод создания элементов меню, просто используя JSON с заголовками и индексом меню, только файлы HTML и JS, а не файлы.vue.

Меню смонтировано, подменю отображается при нажатии на него, но действия подменю (el-menu-item) не работают. Я даже пробую атрибуты click, item-click, v-on: click при создании-menu-item (документация ElementUi говорит, что @click должен использоваться, но это вызывает ошибку на createElement когда атрибуты определены), но никто не работает, ошибка не возникает, как если бы метод не был объявлен.

Только onclick Атрибут работает в элементе el-menu-item, но когда я его использую, метод компонента vue не вызывается, и поэтому я должен создать функцию вне компонента (например, для класса), и когда эта функция вызывается он выполняет вызов метода компонента (я пытаюсь $ emits), и происходит ошибка, потому что метод компонента не найден.

Как я могу добавить @click (или подобное) событие в элементе el-menu внутри функции визуализации компонента для вызова метода того же компонента?

Документация NavMenu ElementUI.

Как я создаю пункт меню:

createElement("el-menu-item",{
    attrs:{
        index:json[i].id,
        click:json[i].onclick
    }},
    json[i].title
)

1 ответ

Решение

На самом деле, это упоминается в документации Vue.js.

См. https://vuejs.org/v2/guide/render-function.html.

например, https://codepen.io/jacobgoh101/pen/ypjGqw?editors=0010

Vue.component("test", {
  render: function(createElement) {
    return createElement(
      "button",
      {
        on: {
          click: function() {
            alert('click');
          }
        }
      },
      "Header"
    );
  }
});
Другие вопросы по тегам