如何在 PolymerElement 中捕获数据类型不匹配异常?

How to catch data type mismatch exception in PolymerElement?

我创建了一个自定义标签 x-account,其属性 balance 为 double 类型。当用户输入非数字数据到金额时抛出此异常。

未捕获错误:计算表达式 'balance' 时出错:类型 'String' 不是 'value' 的类型 'double' 的子类型。

@CustomTag('x-account')
class XAccount extends PolymerElement {
     @published double balance;
     ...
}

<template>
    <input id="account-amount" type="number" value="{{balance}}" autocomplete="off"/>
</template>

如何在 XAccount 中捕捉这个异常?

您可以将字段更改为 getter/setter

double _balance;
@published 
double get balance => _balance;
set balance(value) {
  if(value == null) {
    _balance = null; // or _balance = 0;
  }
  if(value is String) {
    _balance = double.parse(value)
  }
}

通过这种方式,您可以包装可能会抛出 try/catch 块的赋值或语句。

对于 Polymer 1.0,请参阅 Polymer dart: Data bind integer value to String attribute