Dart 使用镜像生成动态表

Dart 使用镜像生成动态表,dart,angular-dart,Dart,Angular Dart,我一直在尝试使用ng repeat生成一个html表,而不必知道数据是如何构造的,因此我使用了如下结构 //包装行和列定义 类项集合{ 列出ColumnDefs; 清单项目; ItemsCollection(this.ColumnDefs,this.Items); } //表示一列 类ColumnDef{ int-id; 字符串名、显示名、表名; bool isPrimaryKey,isNumeric,isCalculated; ColumnDef({this.name,this.display

我一直在尝试使用ng repeat生成一个html表,而不必知道数据是如何构造的,因此我使用了如下结构

//包装行和列定义
类项集合{
列出ColumnDefs;
清单项目;
ItemsCollection(this.ColumnDefs,this.Items);
}
//表示一列
类ColumnDef{
int-id;
字符串名、显示名、表名;
bool isPrimaryKey,isNumeric,isCalculated;
ColumnDef({this.name,this.displayName,this.tableName,this.isPrimaryKey,this.isNumeric,this.isCalculated});
}
//表示一个数据行,因为我不知道在运行时之前数据的结构是什么样子。如果未定义属性,则下面的类会动态添加属性
类动态项{
地图属性;
DynamicItem([Map initialProperties]){
this.properties=initialProperties==null?新映射():initialProperties;
}
noSuchMethod(调用调用){
if(invocation.isAccessor){
final realName=MirrorSystem.getName(invocation.memberName);
if(invocation.isSetter){
final name=realName.substring(0,realName.length-1);
properties[name]=invocation.positionarguments.first;
返回null;
}否则{
返回属性[realName];
}
}
返回super.noSuchMethod(调用);
}
}
//和一部分简单的角度指令来渲染表格
@组成部分(
选择器:'表组件',
出版物:“ctrl”,
模板:“”添加计算列

我最近在一个原型中做了类似的事情;结果只是在数据结构中包含了字段名等(它来自一个JSON服务器)

我的数据如下所示:

类ClientGrid{
列出COL;
列出数据;
int当前页面;
整版网页;
国际总记录;
int-recordsPerPage;
}
类ClientGridColumn{
字符串名;
布尔可见;
}
代码如下:

var table=new TableElement();
table.className=“table table hover”;
var headerRow=table.createTHead().addRow();
data.cols.forEach((c){
如果(c.可见)
headerRow.append(新元素.tag('th')…text=c.name);
});
var body=table.createTBody();
data.data.forEach((r){
var row=body.addRow();
r、 asMap().forEach((i,c){
var col=data.cols[i];
如果(!列可见)
返回;
var cellContents=new SpanElement()
…text=c.toString();
row.addCell().children.add(cellContents);
});
});
此.children.add(表);

镜像速度很慢,在使用JavaScript构建时会导致代码膨胀。为什么您不知道数据是如何构造的?也许还有其他可能的方法?@GünterZöchbauer我只想构建一个仪表板,在这里我可以查看数据并对其进行分组和可视化,并向其中添加在运行时根据其他列计算的Coulmn,问题是,如果我要编写模型,我最终会得到数百个模型。当您将所有数据放入映射和列表中时,您可以检查映射是否包含某些id并根据这些知识更改行为,或者您也可以使用不带镜像的“x is类型”检查。您可以创建一些接口,您的类必须实现这些接口才能由您的组件支持,该组件可用于检查“is接口”。@GünterZöchbauer但除了手工编写之外,我还不能真正绕开思路,使模型具有没有镜像的属性!这是我唯一错过的javascript,我将用javascript重写它,看看它的性能如何。如果属性具有任意名称这很难/不可能。Dart计划对此进行改进,但不要期望很快得到改进。