IronPages和PaperTabs组合的UiBinder与动态创建的子项在多次使用时会消失

时间:2018-08-01 06:27:51

标签: gwt gwt-polymer iron-pages

我正在使用 GWT 版本 2.8.2 gwt-polymer-elements 版本 1.7.0.0 创建我的应用程序。我需要带有可切换内容的标签,这些标签可以在同一页面上多次出现。我尝试通过结合使用PaperTabs和IronPages来实现这一目标。

我添加了自定义UiBinder。

<i:IronPages ui:field="ironPages"></i:IronPages>    
<p:PaperTabs ui:field="paperTabs" scrollable="true"></p:PaperTabs>

我将div动态添加到ironPages:

  

ironPages.add(new HTML("<div>" + outerBox + "</div>"));替换为:

SafeHtmlBuilder outerBoxBuilder = new SafeHtmlBuilder();

outerBoxBuilder.appendHtmlConstant("<div>")
.append(SafeHtmlUtils.fromTrustedString(outerBox.toString()))
.appendHtmlConstant("</div>");

ironPages.add(new HTML(outerBoxBuilder.toSafeHtml()));

每个外部框的定义如下:

for(int i: total){
    PaperMaterial outerBox = new PaperMaterial();
    HTML boxTitle = new HTML("<h2>Some title</h2>");
    outerBox.add(boxTitle);

    PaperMaterial innerBox = new PaperMaterial();
    PaperCheckbox checkBox = new PaperCheckbox();
    // checkBox.getElement().setInnerText("label");
    checkBox.getElement().setInnerSafeHtml(
        new SafeHtmlBuilder().appendEscaped("label").toSafeHtml()
    );

    innerBox.add(checkBox);
    outerBox.add(innerBox);
}

新纸张标签的生成方式类似:

PaperTab singleTab = new PaperTab();
// singleTab.getElement().setInnerHTML("some text");
singleTab.getElement().setInnerSafeHtml(
    new SafeHtmlBuilder().appendEscaped("some text").toSafeHtml()
);
singleTab.getElement().setAttribute("q", pageNumber);
paperTabs.add(singleTab);

UiHandler

@UiHandler("paperTabs")
void tabSelected(IronSelectEvent event) {
    PaperTabElement tab = Js.cast(event.getItem());
    ironPages.setSelected(tab.getAttribute("q"));
}

它在第一次加载页面时有效。当我在不同页面之间导航时,复合小部件会失去其功能。在ironPages中单击paperTab或复选框后,它们便消失了。似乎小部件已被清除并丢失所有子元素。

有人有什么建议吗?我有什么想念的吗?

0 个答案:

没有答案