当我尝试更新用户的地址时,我遇到了一个非常奇怪的错误。我有这个简化的地址对象有两个字段,都是observables:
stateProvince.name = ko.observable("");
stateProvince.code = ko.observable("");
现在,当我尝试稍后更新这两个时,这是开发工具中有效的程序执行:
stateProvince.name("New York");
stateProvince.code("NY");
但第二行实际上并没有改变州代码的值。没有异常发生,尝试在开发工具中更改它不起作用,最奇怪的部分是更改代码时失败的所有内容在更改名称时工作正常。什么条件可能导致淘汰观察无法更新而没有错误?我正在尝试扩展现有的代码库,但我的搜索没有透露任何可以区分这两个对象的内容。
答案 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]);