我在AppEngine和Dart-Polymer客户端上运行了一个dart服务器。这个想法是分享共同的逻辑,比如模型。但是,有一点问题。通常,您可以使模型类扩展JsProxy
,然后使用@reflectable
注释所有相关字段,以便在数据绑定中使用它们。不幸的是,与AppEngine的数据存储区一起使用的模型已经从Model继承。除此之外,我不确定服务器上是否有dart:js
可用。因此,我必须找到另一种方法来使我的模型可以反映UI。
使用@reflectable注释Project#name无法正常工作。与输出相同的空div。
在模型中包含JsProxy:
内置库'dart:html'在独立版上不可用 VM。
有什么想法吗?
@Kind(name: 'Project', idType: IdType.Integer)
class Project extends Model {
@StringProperty(required: true)
String name;
}
@PolymerRegister('project-list')
class ProjectList extends PolymerElement {
@property List<Project> projects;
ProjectList.created() : super.created();
ready() {
fetchProjects();
}
}
<dom-module id="projects-page">
<template>
<template is="dom-repeat" items="{{projects}}">
<div>{{item.name}}</div>
</template>
</template>
</dom-module>
输出:
<div></div>
答案 0 :(得分:1)
这是一个已知问题https://github.com/dart-lang/polymer-dart/issues/664
到目前为止,最好的解决方法是使用应用注释的代理对象并包装共享模型类。
class FooProxy extends JsProxy implements Foo {
final Foo model;
FooProxy(this.model);
@reflectable
int get bar => model.bar;
set(int value) { model.bar = value}
}