聚合物Dart 1.0.0中@reflectable的用途是什么?

聚合物Dart 1.0.0中@reflectable的用途是什么?,dart,dart-polymer,Dart,Dart Polymer,我已经知道了一些我必须使用@reflectable的地方,就像这样 @property String get name Band =>_nameBand; @reflectable void set nameBand(val) { _nameBand = val; notifyPath('nameBand', _nameBand; } 以及由(比如)单击某个元素触发的事件 <paper-button on-click="clicked"></paper-bu

我已经知道了一些我必须使用@reflectable的地方,就像这样

@property String get name Band =>_nameBand;
@reflectable void set nameBand(val) {
   _nameBand = val;
   notifyPath('nameBand', _nameBand;
}
以及由(比如)单击某个元素触发的事件

<paper-button on-click="clicked"></paper-button>
如果没有@reflectable注释,Polymer将无法在每次单击纸张按钮时找到要使用的setter或方法。为什么需要@reflect,例如,它的目的是什么


我意识到我似乎在回答我自己的问题,但我希望得到一些澄清。谢谢

如果没有
@reflectable
注释,摇树器将丢弃polymer所需的所有元数据。聚合物用于允许它使用有限数量的反射,而不会使代码大小过大。

除了@Anders的答案之外……
您需要使用
@reflectable
注释每个方法,这些方法要公开给Polymer作为事件处理程序(
on tap=“clickHandler”
)或用于带有函数调用的绑定,如
属性名=“{{computeValue(someName)}”
。 您还需要注释模型类中要绑定到的每个字段

Person extends JsProxy {
  @reflectable String firstName;
  @reflectable String lastName;
}

所以当你说模型类时,你说的是一个外部类,你的聚合物元素可以用来存储数据,等等。就像一个表示数据库表中一行的模型?是的,我认为在聚合物文档中它叫做复杂数据。如果您有一个类
Person
(在我的示例中,这个名称会更好)`并且您想使用聚合物绑定到该类的字段。它是否必须扩展JsProxy?是的,这是AFAIK当前的要求(
JsProxy
@reflectable
)。我想您也可以将
JsProxy
添加为mixin,但我还没有检查。我会将此标记为正确,但我感谢+Günter Zöchbauer的回答,它为我提供了有关需要@reflectable的位置的信息
Person extends JsProxy {
  @reflectable String firstName;
  @reflectable String lastName;
}