在研究另一个问题的过程中,我发现了一个非常奇怪的现象,其中<span>
与可观察对象的绑定显示为“ true”,而单击运行函数的按钮将其记录到控制台窗口中则显示为“ false”!
小提琴在这里:http : //jsfiddle.net/fbc0w39w/1/
单击绿色按钮,在chrome中使用F12显示控制台窗口,单击“记录”,然后在控制台中看到“ true”。您还将在“提交”按钮下方看到“ true”。然后清除用户登录中的文本,单击其他位置(模糊时值更新),然后在登录框中查看错误消息。提交按钮下方的值保持为true。再次点击“登录”按钮,瞧!它将记录为“ False”,这是应该做的。
据我所知,这两个值都来自vo.isValid变量...?
这可能是问题所在:在您的getData
函数中,您要用新的替换整个函数validatedObservable
。底部的两个UI元素绑定到旧的isValid
可观察对象。
我不确定使用the的“正确”方法validationObservable
是什么(从未使用过),但是通过将其嵌套在一个可观察的对象中,您可以看到它是一个问题:
self.vo = ko.observable(ko.validatedObservable());
self.getData = function() {
self.selectedUser(ko.mapping.fromJS(data, validationMapping));
self.vo(ko.validatedObservable(self.selectedUser(), {deep: true, live: true, observable: true}));
};
因此,您可能希望找到一种方法,以确保validatedObservable
公正者对变更做出反应selectedUser
而无需实例化新变更。
这是一个“有效的”小提琴:http : //jsfiddle.net/st5e0r1o/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句