Dart有一个已知错误,即使用公共变量创建的类无法传递给本机JSON模板调用。我不确定这方面是否有任何进展。
实施例
class Test{
String a;
int b;
}
很高兴翻译成:
{"a":"","b":0}
似乎在环顾互联网和dart论坛时,这是一个问题,并且使用与Javascript密切协作的语言,这是一个非常大的疏忽。我还没有看到任何东西,虽然看起来如果你使用镜子,你可能会刮掉公共变量,这似乎是时间密集的。
以下是我正在研究的样本。
class UserGroup{
String a;
int b;
UserGroup.fromMap(Map m){ ... }
}
我从服务电话中收到一张投射到UserGroup的地图。
然后生成一个List,它被绑定并传递给将访问Map的子WebComponent。这样的事情。
<service-call result="{{rowData}}"></service-call>
<grid-creator rows="{{rowData}}"></grid-creator>
和网格创建者内部:
<dom-module id="grid-creator>
<template>
<div>
<template is="dom-repeat" for="{{rows}}" as="row">
<div id="{{row.id}}">{{row.name}}</div>
</template>
</div>
</template>
</dom-module>
问题在于grid-creator
是动态的,接受一行地图并相应地解析。即使我要说List<UserGroup> rows
它也不会将其理解为row
并且会抛出如下错误:
类型'UserGroup'不是'row'类型'Map'类型的子类型
这意味着Dart类根本不能与模板转发器交互,除非类本身是map的子类型。这对我没有意义。
话虽如此,很多笔记都是从2015年9月开始的。我很好奇这已经取得了进展。
你可以说:好吧,为什么不只是有一个toJson方法来转换一个地图,然后解析并拦截它并在它到达模板之前转换它。
我的意思是,我想如果我在rowData
上做一个观察者,然后有一个第二个变量被填充并随后刷新grid-creator
,这可能是一件事,但这不是真正的重点。它有点删除了对象的传递,在那一点上,我应该删除类组件并只使用地图。如果我只是使用地图,那么为什么我会使用飞镖? /endrant
无论如何,这个领域有没有改进?
我正在阅读关于序列化的一个主题:https://github.com/dart-lang/sdk/issues/16630
编辑:我试图研究让UserGroup扩展JsProxy的概念,但我认为这不会解决我遇到的问题