0

У меня есть приложение MVP GWT 2.5.1 с использованием версии 1.1.1 gwt-визуализации. Мой вид имеет два Button s и VerticalPanel (доступ к ведущему как display.getPanel()). Одна кнопка добавляет PieChart к VerticalPanel, а другая удаляет ее. Ведущий хранит ссылку PieChart как Widget, так что она знает, когда она была добавлена ​​/ удалена. Он инициализируется null.Есть ли «правильный» способ добавления/удаления PieChart?

Я проверил инструменты разработчика chrome, чтобы код добавления/удаления не создавал утечку DOM. Но после того, как PieChart был удален, его элементы остались в отдельном дереве DOM, все цветные красные. Когда я попробовал один и тот же код добавления/удаления с Label вместо PieChart, после удаления не осталось отдельного дерева DOM.

Мои вопросы: я делаю что-то неправильно при добавлении или удалении PieChart? Возможно, gwt-visualization имеет другой метод обработки этого, о котором я не знаю, но мой google-fu не может дать ответ.

Ведущий добавить/удалить код ниже:

display.getAddChartButton().addClickHandler(new ClickHandler() { 
    public void onClick(ClickEvent event) { 
     if (widget == null) { 
      Runnable onLoadCallback = new Runnable() { 
       public void run() { 
        PieChart content = new PieChart(createTable(), createOptions()); 
        // Label content = new Label("Content"); 
        display.getPanel().add(content); 
        widget = content; 
       } 
      }; 
      VisualizationUtils.loadVisualizationApi(onLoadCallback, PieChart.PACKAGE); 
     } 
    } 
}); 
display.getRemoveChartButton().addClickHandler(new ClickHandler() { 
    public void onClick(ClickEvent event) { 
     if (widget != null) { 
      display.getPanel().remove(widget); 
      widget = null; 
     } 
    } 
}); 

private AbstractDataTable createTable() { 
    DataTable data = DataTable.create(); 
    data.addColumn(ColumnType.STRING, "Task"); 
    data.addColumn(ColumnType.NUMBER, "Hours per Day"); 
    data.addRows(2); 
    data.setValue(0, 0, "Work"); 
    data.setValue(0, 1, 14); 
    data.setValue(1, 0, "Sleep"); 
    data.setValue(1, 1, 10); 
    return data; 
} 

private Options createOptions() { 
    Options options = Options.create(); 
    options.setWidth(400); 
    options.setHeight(240); 
    options.setTitle("My Daily Activities"); 
    return options; 
} 

ответ

Смежные вопросы