我对 Dart 的新功能很满意。
但是,我想在 web 组件(聚合物)中使用
像这样:
文件.dart
enum Categoria {ID, DESCRICAO, NATUREZA, ID_SUBCATEGORIA_DA, DESCRICAO_SUBCATEGORIA_DA, ATIVO}
@published
Map itemList;
文件.html
..
<template>
<paper-input value="{{itemList[Categoria.ID]}}"></paper-input>
</template>
<script type="application/dart" src="file.dart">
</script>
..
在@published 上的值中有一个 Map itemList,我想使用枚举 Categoria.ID 作为键来查找 Map 的值。
可以在 Web 组件(聚合物)中使用吗?
最佳答案
这不受支持,因为类型不能在 Polymer 绑定(bind)中使用。
以下表达式也不支持,并且枚举基本上是类似代码的语法糖:
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 元素都以这种方式支持枚举。不过还是不是很漂亮。
关于enums - Dart 枚举 - 聚合物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27326224/