我按照 Vaadin 教程(创建协作视图)来广播事件并注册它们。
Registration eventRegistration;
@Override
protected void onAttach(AttachEvent attachEvent) {
log.debug("In attach...");
UI ui = attachEvent.getUI();
eventRegistration= Broadcaster.register(
"eventName",
message -> ui.access(() -> {
log.debug("Request to refresh grid...");
presenter.refreshGrid();
ui.push();
}));
}
@Override
protected void onDetach(DetachEvent detachEvent) {
log.debug("In detach...");
if(eventRegistration != null) {
eventRegistration.remove();
eventRegistration = null;
}
}
Run Code Online (Sandbox Code Playgroud)
一切正常,除了刷新页面时,onDetach()不执行 中的逻辑。但是,刷新后,您将进入该onAttach()方法。因此,您实际上将注册几个“相同”的侦听器,而无需删除前一个侦听器,并且实际上获得了两倍的侦听器。例如onDetach(),仅当您转到另一个菜单项时才能访问该方法。
Vaadin 推荐的在刷新之前/期间删除这些侦听器的方法是什么?
我想通过属性设置富文本编辑器组件的 html 值。
下面的标签和属性会生成下面的打印屏幕。如何按属性设置 html 值?
<vaadin-rich-text-editor html-value="<p>Hello</p>"></vaadin-rich-text-editor>
Run Code Online (Sandbox Code Playgroud)
在元素检查中,我可以看到该值,但设置的值只是而<p><br></p>不是<p>Hello</p>。(参见下面的打印屏幕)