【发布时间】:2012-03-20 03:10:06
【问题描述】:
我不确定这是否可行,但我有一个验证系统,当某些东西通过依赖的 observable 变得有效/无效时,它会通知我的验证系统。现在,当用户填写表单时,这非常有用,因为dependantObservable 被驱动了底层可观察值的变化。 (即,如果 Name 属性发生变化,它将重新评估 isValid 依赖的 observable,这将反过来通知我的绑定哪个挂钩到验证系统。
现在我的问题是,如果用户根本不触摸表单而直接提交,它不会触发绑定,因为任何可观察对象的基础值都没有改变,所以没有订阅者会知道发生的任何验证更改。理想情况下,我不想遍历每个 observable 并重新为其分配当前变量以推动验证评估,这反过来又会触发验证状态的变化。所以我真正想做的就是让这个isValiddependantObservable 来刷新,因为没有更好的词。
无论哪种方式看起来都很讨厌,但我的选择似乎是:
1) 对所有被验证的 observables 强制更改值(可怕)
2)强制重新评估 isValiddependantObservable 以触发订阅者(不那么可怕,但仍然很糟糕)
3) 重新编写验证库以公开forceValidation() 函数,该函数会以某种方式触发重新评估所有内容,从而绕过底层可观察对象触发验证管道的需要。
有什么想法吗?
【问题讨论】:
标签: validation knockout.js ko.dependentobservable