无法写入淘汰赛观察

时间:2013-10-28 12:30:12

标签: javascript knockout.js

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

stateProvince.name = ko.observable("");
stateProvince.code = ko.observable("");

现在,当我尝试稍后更新这两个时,这是开发工具中有效的程序执行:

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

但第二行实际上并没有改变州代码的值。没有异常发生,尝试在开发工具中更改它不起作用,最奇怪的部分是更改代码时失败的所有内容在更改名称时工作正常。什么条件可能导致淘汰观察无法更新而没有错误?我正在尝试扩展现有的代码库,但我的搜索没有透露任何可以区分这两个对象的内容。

1 个答案:

答案 0 :(得分:1)

从评论转到答案:

如果code绑定到select并且您正在使用value绑定(通常使用options),则Knockout会尝试强制您的observable的值对应于一个选项。确保您的初始值对应于一个选项。

如果您的选项稍后会填充,那么您需要重新填充所选的值,或者您可以在初始加载时预先填充它,例如:

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

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