0

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

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

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

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

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

4

1 回答 1

1

从评论转向答案:

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

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

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

//pre-populate with the one matching value
this.codeOptions = ko.observableArray([data.code]); 
于 2013-10-28T16:37:23.527 回答