Vaadin Flow:如何将 class 名称添加到模板
Vaadin Flow: How to add class name to Template
我在模板文件中有一个 Vaadin 组件:
import {LitElement, html} from 'lit-element';
import '@vaadin/vaadin-text-field/vaadin-text-field.js';
import '@vaadin/vaadin-button/vaadin-button.js';
class HelloWorld extends LitElement {
render() {
return html`
<div>
<vaadin-text-field id="firstInput"></vaadin-text-field>
<vaadin-button id="helloButton">Click me!</vaadin-button>
</div>`;
}
}
customElements.define('hello-world', HelloWorld);
和服务器端javaclass文件:
@Tag("hello-world")
@JsModule("./src/hello-world.ts")
public class HelloWorld extends LitTemplate {
/**
* Creates the hello world template.
*/
public HelloWorld() {
addClassName("my-style"); // Method not available!!
}
}
在 java class 中,我想为整个模板组件添加一个 class 名称以动态设置样式。但是 LitTemplate 中没有“addClassName()”方法。是否可以向 LitTemplate 添加 class 名称?在浏览器检查器中,我可以手动将 'class="my-style"' 添加到 hello-world 组件并且它可以工作。
使用 HasStyle
mixin 访问该方法:
public class HelloWorld extends LitTemplate implements HasStyle { ... }
您可以查看实现以了解下面的内容https://github.com/vaadin/flow/blob/master/flow-server/src/main/java/com/vaadin/flow/component/HasStyle.java
实施 HasStyle
应该有效:
@Tag("hello-world")
@JsModule("./src/hello-world.ts")
public class HelloWorld extends LitTemplate implements HasStyle {
public HelloWorld() {
addClassName("my-style");
}
}
我在模板文件中有一个 Vaadin 组件:
import {LitElement, html} from 'lit-element';
import '@vaadin/vaadin-text-field/vaadin-text-field.js';
import '@vaadin/vaadin-button/vaadin-button.js';
class HelloWorld extends LitElement {
render() {
return html`
<div>
<vaadin-text-field id="firstInput"></vaadin-text-field>
<vaadin-button id="helloButton">Click me!</vaadin-button>
</div>`;
}
}
customElements.define('hello-world', HelloWorld);
和服务器端javaclass文件:
@Tag("hello-world")
@JsModule("./src/hello-world.ts")
public class HelloWorld extends LitTemplate {
/**
* Creates the hello world template.
*/
public HelloWorld() {
addClassName("my-style"); // Method not available!!
}
}
在 java class 中,我想为整个模板组件添加一个 class 名称以动态设置样式。但是 LitTemplate 中没有“addClassName()”方法。是否可以向 LitTemplate 添加 class 名称?在浏览器检查器中,我可以手动将 'class="my-style"' 添加到 hello-world 组件并且它可以工作。
使用 HasStyle
mixin 访问该方法:
public class HelloWorld extends LitTemplate implements HasStyle { ... }
您可以查看实现以了解下面的内容https://github.com/vaadin/flow/blob/master/flow-server/src/main/java/com/vaadin/flow/component/HasStyle.java
实施 HasStyle
应该有效:
@Tag("hello-world")
@JsModule("./src/hello-world.ts")
public class HelloWorld extends LitTemplate implements HasStyle {
public HelloWorld() {
addClassName("my-style");
}
}