有没有办法在验证错误的情况下如何阻止值转换器更新?例如,考虑这个简单的转换器:
export class JsonValueConverter {
toView(value) {
return JSON.stringify(value);
}
fromView(value) {
try {
return JSON.parse(value);
} catch (e) {}
}
}
<textarea value.bind="obj | json"></textarea>
Run Code Online (Sandbox Code Playgroud)
输入到textarea的任何无效JSON值都会导致obj = undefined.我想保留最后一个有效值.
不幸的是,ValueConverter不会帮助你,因为它是无状态的,并不是为了做你想做的事情而设计的.
我的建议是检查它是否成功解析为JSON对象.如果没有,只需通过添加return value;到catch()括号中返回未转换的值.或者,如果您希望保持纯净,return null;.
您还应该在提交数据之前向表单添加验证以要求有效输入.我建议使用Aurelia验证 - 它在这里适合你.
最后,您应该考虑添加绑定行为以避免Value Converter干扰您的输入.您可以添加& debounce:1000以使其仅在输入后1秒空闲后进行检查,或者& updateTrigger:'blur'等待在焦点丢失之后进行验证.
| 归档时间: |
|
| 查看次数: |
280 次 |
| 最近记录: |