One*_*era 4 javascript vaadin web-component polymer lit-element
我正在尝试使用 lit Element 设计 Web 组件,并且我需要有关事件的帮助。正如我们从附加的代码片段中看到的,我们可以@change="${this.handleEvent}"在 html 模板中使用并处理该函数handleEvent(e){}并处理lit Element 组件内的通过这种方式,事件仅在点亮的 Web 组件中受到限制和控制。
然而,当其他人使用我们的 Web 组件时,他们对定义组件中这些事件的值没有太多控制或访问权限。例如,如果我们有一个 index.html 文件并且我像这样使用它<my-element onchange="handleEvent(e)"></my-element>,我应该有权访问 onchange 事件并仅调用索引文件内的函数。
那么,有没有一种方法可以实现与常规 html 事件类似的行为,而不是编写仅限于 lit Element Web 组件的事件。
<script src="https://unpkg.com/@webcomponents/webcomponentsjs@latest/webcomponents-loader.js"></script>
<script type="module">
import { LitElement, html, css } from 'https://unpkg.com/lit-element/lit-element.js?module';
class MyElement extends LitElement {
static get properties() {
return {
checked: { type: Boolean, attribute: true }
};
}
static get styles() {
return [
css`
div {
padding: 10px;
width: 90px;
border: 2px solid orange;
}
`
];
}
render() {
return html`
<div>
<input
@change="${this.handleEvent}"
?checked="${this.checked}"
type="checkbox" /> Checkbox
</div>
`;
}
handleEvent(e) {
console.log(`Checkbox marked as: ${e.target.checked}`);
}
}
customElements.define('my-element', MyElement);
</script>
// Index.html
<my-element></my-element>
// I am expecting to pass an event and handle it in the importing
component.
// Something like: **<my-element onchange="handleEvent(e)"}></my-
element>**Run Code Online (Sandbox Code Playgroud)
如果你想监听元素外部的事件,你应该调度一个像这样的事件:
const event = new Event('my-event', {bubbles: true, composed: true});
myElement.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)
有关事件的 Lit 文档很好地概述了如何以及何时调度事件https://lit.dev/docs/components/events/#dispatching-events
| 归档时间: |
|
| 查看次数: |
11193 次 |
| 最近记录: |