为什么 getElement().getProperty("value") 不工作
Why getElement().getProperty("value") not working
我在我的网络组件中读取 属性 时遇到问题。我不明白为什么它不起作用。我创建了一个简单的例子,点击按钮后我应该得到 属性 的值,但它是空的。我不知道为什么?在我的其他测试中,setProperty 工作正常,但 getProperty 总是获得与我在 setProperty 中设置的值相同的值。我也尝试在浏览器中更改 属性。 PropertyChangeListener 也永远不会在客户端更改值后触发。为此花很多时间。有人可以告诉我发生了什么事吗?
HelloWorld.class
import com.vaadin.flow.component.DomEvent;
import com.vaadin.flow.component.Tag;
import com.vaadin.flow.component.dependency.JsModule;
import com.vaadin.flow.component.littemplate.LitTemplate;
@Tag("hello-world")
@JsModule("./components/hello-world.ts")
public class HelloWorld extends LitTemplate {
@DomEvent("click")
public static class ClickEvent extends ComponentEvent<HelloWorld> {
public ClickEvent(HelloWorld source, boolean fromClient) {
super(source, fromClient);
}
}
public HelloWorld() {
setId("hello-world");
getElement().addPropertyChangeListener("value", "change", e -> {
System.out.println("change value: " + e.getValue());
});
addListener(ClickEvent.class, e -> System.out.println("getValue(): " + getValue()));
}
public void setValue(String value) {
getElement().setProperty("value", value);
}
public String getValue() {
return getElement().getProperty("value");
}
}
你好-world.ts
import { LitElement, html, property} from 'lit-element';
export class HelloWorld extends LitElement {
@property({type: String}) value = 'unset';
render() {
return html`
<div>${this.value}</div>
<button @click=${this._click}>Button</button>
`;
}
_click() {
this.value = 'Clicked';
let click = new Event('click');
this.dispatchEvent(click);
}
}
customElements.define("hello-world", HelloWorld);
您已将 属性 值设置为在客户端触发 change
事件时同步回服务器,但没有触发此类事件。但是,有一个 click
事件,因此您可能希望更改 addPropertyChangeListener
以使用该 DOM 事件名称。
我在我的网络组件中读取 属性 时遇到问题。我不明白为什么它不起作用。我创建了一个简单的例子,点击按钮后我应该得到 属性 的值,但它是空的。我不知道为什么?在我的其他测试中,setProperty 工作正常,但 getProperty 总是获得与我在 setProperty 中设置的值相同的值。我也尝试在浏览器中更改 属性。 PropertyChangeListener 也永远不会在客户端更改值后触发。为此花很多时间。有人可以告诉我发生了什么事吗?
HelloWorld.class
import com.vaadin.flow.component.DomEvent;
import com.vaadin.flow.component.Tag;
import com.vaadin.flow.component.dependency.JsModule;
import com.vaadin.flow.component.littemplate.LitTemplate;
@Tag("hello-world")
@JsModule("./components/hello-world.ts")
public class HelloWorld extends LitTemplate {
@DomEvent("click")
public static class ClickEvent extends ComponentEvent<HelloWorld> {
public ClickEvent(HelloWorld source, boolean fromClient) {
super(source, fromClient);
}
}
public HelloWorld() {
setId("hello-world");
getElement().addPropertyChangeListener("value", "change", e -> {
System.out.println("change value: " + e.getValue());
});
addListener(ClickEvent.class, e -> System.out.println("getValue(): " + getValue()));
}
public void setValue(String value) {
getElement().setProperty("value", value);
}
public String getValue() {
return getElement().getProperty("value");
}
}
你好-world.ts
import { LitElement, html, property} from 'lit-element';
export class HelloWorld extends LitElement {
@property({type: String}) value = 'unset';
render() {
return html`
<div>${this.value}</div>
<button @click=${this._click}>Button</button>
`;
}
_click() {
this.value = 'Clicked';
let click = new Event('click');
this.dispatchEvent(click);
}
}
customElements.define("hello-world", HelloWorld);
您已将 属性 值设置为在客户端触发 change
事件时同步回服务器,但没有触发此类事件。但是,有一个 click
事件,因此您可能希望更改 addPropertyChangeListener
以使用该 DOM 事件名称。