0

我正在开发一个 Dart 项目,用户可以通过单击按钮添加新的自定义元素。每个自定义元素都是一个包含表格的 div。用户可以调整 div 的大小。我的问题是,在我的 dart 文件保存的元素列表中添加了一个新元素后,所有 div 的大小都会自动重置。有没有办法在保持旧元素属性不变的同时向模板添加新元素?

这是我处理自定义元素中主要 div 的 CSS 代码:

#superDivContainer {
  border: 2px solid black; 
  resize: both;
  display: inline-block;
}

#tableContainer {  
  height: 125px;
  overflow: scroll;
}

在此先感谢您的帮助!

4

1 回答 1

0

当您更改后备列表时,模板会重复,销毁所有旧元素并从头开始重新创建它们,因此所有用户调整大小信息都会丢失。

当您向列表中添加新项目时,您可以存储旧元素的所有大小信息,然后在添加项目后设置新元素的大小:

// Stores size information
List<List> sizes = [];

void add() {
  // Store the old sizes
  sizes.clear();
  ElementList divs = queryAll(".superDivContainer");
  for(int i = 0; i < divs.toList().length; i++) {
    Element div = divs[i];
    sizes.add([div.style.width, div.style.height]);
  }

  // Add the new item
  yourList.add("new");

  // Set the sizes of the new elements
  Timer timer = new Timer(new Duration(milliseconds: 1), () {
    divs = queryAll(".superDivContainer");
    for(int i = 0; i < divs.toList().length && i < sizes.length; i++) {
      Element div = divs[i];
      div.style.width = sizes[i][0];
      div.style.height = sizes[i][1];
    }
  });
}

两个注意事项:

  • 我将 superDivContainer 更改为一个类而不是一个 id,因为您似乎将它应用于多个元素;您将需要更改您的 CSS 以反映这一点
  • 1 毫秒计时器解决了在添加和访问新元素之前存在微小延迟的事实
于 2013-06-27T14:51:03.930 回答