在验证错误的情况下,有什么方法可以阻止值转换器更新?例如,考虑这个简单的转换器:
import Accelerate
var N = 6
var M = 3
var convN = N + M - 1
var xf = [Float](repeating:0.0, count:N)
var yf = [Float](repeating:0.0, count:M)
for i in 0..<N {
xf[i] = Float(i+1)
}
for i in 0..<M {
yf[i] = Float(i+1)
}
var outputf = [Float](repeating:0.0, count:convN)
// padding zero
xf = [Float](repeating:0.0, count:convN-N) + xf
var ptr_xf = UnsafePointer<Float>(xf)
var ptr_yf = UnsafePointer<Float>(yf).advanced(by: yf.count-1)
vDSP_conv(ptr_xf, 1, ptr_yf, -1, &outputf, 1, vDSP_Length(convN), vDSP_Length(M))
print("[Float]: \(outputf)") // [Float]: [1.0, 4.0, 10.0, 16.0, 22.0, 28.0, 27.0, 18.0]
输入到textarea的任何无效JSON值都会导致x = int(raw_input())
y = int(raw_input())
l=[]
for i in range(x):
inner_list = []
for j in range(y):
inner_list.append((i*j))
l.append(inner_list)
。我想保留最后一个有效值。
答案 0 :(得分:5)
不幸的是,ValueConverter不会帮助你,因为它是无状态的,并不是为了做你想做的事情。
我的建议是检查它是否成功解析为JSON对象。如果不是,则只需将return value;
添加到catch()
括号中,即可返回未转换的值。或者,如果您希望保持纯净,return null;
。
您还应该在提交数据之前向表单添加验证以要求有效输入。我建议使用Aurelia验证 - 它在这里适合你。
最后,您应该考虑添加绑定行为,以避免Value Converter干扰您的输入。您可以添加& debounce:1000
以使其仅在输入后1秒空闲后检查,或& updateTrigger:'blur'
等待确认直到焦点丢失后。