Dart enum - 聚合物

时间:2014-12-05 23:16:16

标签: enums dart dart-polymer

我对Dart的新功能感到满意。

但是,我想在web组件(Polymer)中使用

像这样:

file.dart

enum Categoria {ID, DESCRICAO, NATUREZA, ID_SUBCATEGORIA_DA, DESCRICAO_SUBCATEGORIA_DA, ATIVO}

@published
Map itemList;

file.html

...

<template>
  <paper-input value="{{itemList[Categoria.ID]}}"></paper-input>
</template>

<script type="application/dart" src="file.dart">
</script>  

...

在@published上的值中有一个Map itemList,我想使用enum Categoria.ID for key来查找Map的值。

Web Component(聚合物)有可能吗?

1 个答案:

答案 0 :(得分:2)

这是不受支持的,因为不能在聚合物绑定中使用类型。

以下表达式既不受支持,并且枚举基本上是类似代码的语法糖:

class SomeClass {
  static final someVal = 1;
}
<template if="{{x is SomeClass}}"></template>
<template if="{{x == SomeClass.someVal}}"></template>

作为解决方法,您可以添加类似

的方法
Categoria categoriaEnum(String val) =>
  Categoria.values.firstWhere((i) => 
      '${i}'.toString().toLowerCase().endsWith('.${val.toLowerCase()}'));

表达式

<paper-input value="{{itemList[categoriaEnum('ID')]}}"></paper-input>

您还可以将方法移动到mixin,并通过仅应用混合使每个Polymer元素以这种方式支持枚举。虽然还不是很漂亮。