(JsFiddle)Knockout observable在屏幕上显示不同的值到console.log
问题描述:
在调查另一个问题期间,我发现了一个非常奇怪的现象,其中绑定到observable的<span>
显示“true”,而单击运行按钮将其记录到控制台窗口的功能显示“false”!(JsFiddle)Knockout observable在屏幕上显示不同的值到console.log
小提琴是在这里:在镀铬http://jsfiddle.net/fbc0w39w/1/
点击绿色按钮,使用F12显示控制台窗口中,点击“记录它”看“真”在控制台中。您还会在提交按钮下方看到“true”。然后清除用户登录中的文本,在其他地方单击(模糊上的值更新)并在登录框中查看错误消息。提交按钮下方的值保持为true。再次点击“登录”按钮,瞧!它记录下它应该做的“假”。
据我所知,这两个值都来自vo.isValid变量...?
答
这可能是问题所在:在您的getData
函数中,您将用新的函数代替整个validatedObservable
。两个底部的UI元素绑定到旧的isValid
可观察。
我不知道使用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}));
};
所以你'd可能想要找到一种方法来确保validatedObservable
只是对selectedUser
中的更改做出反应而不实例化新的。
这里是一个“工作”小提琴:http://jsfiddle.net/st5e0r1o/
对不起,有错了链接那里! – TheMook