我对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(聚合物)有可能吗?
答案 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元素以这种方式支持枚举。虽然还不是很漂亮。