Я хочу реагировать на события, начинающиеся с элементов, помещенных в строки сетки данных.Передача сетки данных предотвращает всплытие событий в родительский компонент, содержащий сетку.При размещении кнопок в столбце сетки для каждой строки я не могу поймать щелчок или любое другое событие из компонента, в котором размещена сетка.
Примеры из https://vaadin.com/components/vaadin-grid/html-examples основаны на подключении js-хуковв HTML-файл.Я работаю с Lit-элементом и пытаюсь сделать то же самое при обратном вызове firstUpdated ().Проблема в том, что, по-видимому, на данный момент таблица недоступна.
<vaadin-grid id="test" .items=${this.data} theme="compact">
<vaadin-grid-column width="40px" flex-grow="0">
<template class="header">#</template>
<template>
<vaadin-button style="font-size:10px;" theme="icon" focus-target @click="${(e) => { console.log(e) }}">
<iron-icon icon="icons:create"></iron-icon>
</vaadin-button>
</template>
</vaadin-grid-column>
</vaadin-grid>
Я ожидал получить журнал, и ничего не происходит, так как компонент сетки предотвращает всплытие события к моему компоненту.
Код, который пытается реализовать свойство рендерера для vaadin-grid-column:
import { LitElement, html, css } from 'lit-element'
import {render} from 'lit-html';
import '@vaadin/vaadin-grid/vaadin-grid.js'
import '@vaadin/vaadin-grid/vaadin-grid-filter-column.js'
import '@vaadin/vaadin-grid/vaadin-grid-sort-column.js';
import '@vaadin/vaadin-grid/vaadin-grid-filter.js';
import '@vaadin/vaadin-grid/vaadin-grid-sorter.js'
export default class MyClass extends LitElement {
static get properties () {
return {
data: {
type: Array,
hasChanged: () => true
},
}
}
get grid() {
return this.shadowRoot.querySelector('vaadin-grid');
}
constructor () {
super()
this.data = []//is being assigned from super as a property to a custom element
}
render () {
return html`
<vaadin-grid id="test" .items=${this.data}>
<vaadin-grid-column .renderer=${this.columnRenderer} header="some header text"></vaadin-grid-column>
</vaadin-grid>
`
}
columnRenderer(root, column, rowData) {
render(html`test string`, root);
}
}
window.customElements.define('my-elem', MyClass)