Как определить события 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"
);
}
});