javascript - KnockoutJS 在值后加载选项时丢失以前的值

标签 javascript mvvm knockout.js

我正在根据 AJAX 请求提供我的选项,而值最初在选择中。然而,Knockout 似乎删除了绑定(bind)选项中没有的值。

示例:http://jsfiddle.net/EVzrH/

Knockout 似乎使用 selectExtensions(v3 的第 1699 行)来读取和写入所选选项。在此新值与索引匹配,并通过再次获取索引并与数据匹配返回。

如何避免数据丢失?

最佳答案

通常,我通过使用当前值预填充 observableArray 来处理这个问题(不需要文本,因为您可能还不知道)。

喜欢:

var viewModel = {
    val: ko.observable(1),
    opts: ko.observableArray([{ Id: 1 }])
};

然后,让 observableArray 在返回时填充实际值。

对于更通用的解决方案,您可以使用本答案第二部分中所述的自定义绑定(bind):Knockout js: Lazy load options for select

这会为您预填充 observableArray,并考虑到您可能设置或未设置 optionsValue

关于javascript - KnockoutJS 在值后加载选项时丢失以前的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20125788/

相关文章:

javascript - 与 AMD (requirejs) 一起获得闭包编译器类型安全性的最可靠方法是什么?

c# - MVVM 最佳实践 - 直接使用模型列表成员的引用或制作副本?

javascript - 如何在 ruby​​ on rails 中对 onclick-javascript 调用操作

javascript - `.then` 和 `.catch` Promise 处理程序是否以某种方式配对并像 `.then(resolutionHandler, rejectionHandler)` 一样对待?

javascript - 如何使用嵌套过滤器来检测是否只有一个 li & 它的 child 只有 <strong>

c# - 在WPF中保存控件的图像(屏幕截图) - MVVM模式

WPF MVVM View 问题

javascript - 使用下拉菜单为带 knockout 的变量赋值

javascript - 添加接触计数器 knockout

javascript - Browserify/Stringify 剥离 Knockout Comment Binding