如果出现验证错误,请停止更新Aurelia值转换器

时间:2017-01-21 08:43:02

标签: aurelia

在验证错误的情况下,有什么方法可以阻止值转换器更新?例如,考虑这个简单的转换器:

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) 。我想保留最后一个有效值。

1 个答案:

答案 0 :(得分:5)

不幸的是,ValueConverter不会帮助你,因为它是无状态的,并不是为了做你想做的事情。

我的建议是检查它是否成功解析为JSON对象。如果不是,则只需将return value;添加到catch()括号中,即可返回未转换的值。或者,如果您希望保持纯净,return null;

您还应该在提交数据之前向表单添加验证以要求有效输入。我建议使用Aurelia验证 - 它在这里适合你。

最后,您应该考虑添加绑定行为,以避免Value Converter干扰您的输入。您可以添加& debounce:1000以使其仅在输入后1秒空闲后检查,或& updateTrigger:'blur'等待确认直到焦点丢失后。