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