Javascript 无法写入一个击倒的可观察对象

Javascript 无法写入一个击倒的可观察对象,javascript,knockout.js,Javascript,Knockout.js,当我试图更新一个用户的地址时,我遇到了一个非常奇怪的错误。我有一个简化的address对象,有两个字段,都是可观察的: stateProvince.name = ko.observable(""); stateProvince.code = ko.observable(""); 现在,当我稍后尝试更新这两个时,这就是开发工具中有效的程序执行: stateProvince.name("New York"); stateProvince.code("NY"); 但是第二行实际上并没有改变状态代码

当我试图更新一个用户的地址时,我遇到了一个非常奇怪的错误。我有一个简化的address对象,有两个字段,都是可观察的:

stateProvince.name = ko.observable("");
stateProvince.code = ko.observable("");
现在,当我稍后尝试更新这两个时,这就是开发工具中有效的程序执行:

stateProvince.name("New York");
stateProvince.code("NY");

但是第二行实际上并没有改变状态代码的值。没有异常发生,尝试在dev工具中更改它是不起作用的,最奇怪的是,更改代码时失败的所有操作在更改名称时都可以正常工作。什么情况会导致无法无错误更新而导致淘汰?我试图扩展一个现有的代码库,但我的搜索并没有发现任何可以区分这两个对象的东西。

从注释到答案:

如果代码绑定到一个select,并且您通常使用选项的值绑定,那么Knockout会尝试强制您的observable的值对应于一个选项。确保初始值与选项对应

如果以后要填充选项,则需要重新填充选定值,或者可以在初始加载时使用以下内容预填充它:

this.code = ko.observable(data.code);

//pre-populate with the one matching value
this.codeOptions = ko.observableArray([data.code]); 

最好的办法是尝试在JSFIDLE中复制它。从这个代码来看,它看起来不错。如果让我猜的话,我会说您的代码绑定到select。如果您使用的值绑定通常与select元素上的选项一起使用,那么Knockout会尝试强制您的可观察值与选项对应。可能NY与某个选项不匹配。它绑定到一个select!NY是一个选项,但它可能还不存在,因为生成选项的可观察数组尚未创建。谢谢,我将在填充select选项时添加一个回调。