javascript - knockout.js 和 observableArray 在第二次点击时不更新 DOM

标签 javascript knockout.js ko.observablearray

我已经查看了很多以前的答案,并尝试了几种方法,但是我所做的任何事情都不允许我在第二次尝试应用绑定(bind)时更新我的​​ DOM。

看看下面演示问题的 fiddle 。

http://jsfiddle.net/rARfx/4/

虽然我通过 $.getJSON() IRL 提取数据,但 fiddle 仍然重现了我摆弄的内联 JSON 和那里的代码的问题。

我尝试过的东西被注释掉了(will/hasMutated、replace、removeAll)。

我希望完成的是,我的人物 X(亚瑟小子)的五个新闻元素将被更新/替换为人物 Y(罗韩)的五个新闻,但如果我什至可以将元素 5-9 附加到 0-4 并看到 10 个 li 标签。

要重现该问题,请运行 fiddle,然后单击“再做一次”链接以模拟 JSON 加载并注意它不会显示新的数据元素,它只会生成一个没有子项的空白 ul 标记。

最佳答案

您不应该将同一个对象绑定(bind)到多个模型。相反,只需使用新信息更新模型,更改就会反射(reflect)在 View 中。

我已经更改了代码来做到这一点:http://jsfiddle.net/rARfx/5/

关于javascript - knockout.js 和 observableArray 在第二次点击时不更新 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12591164/

相关文章:

javascript - 如何合并数组中的重复条目

Knockout.js - 如何限制自定义绑定(bind)

javascript - 替换 Knockout.js observableArray 中的所有元素

javascript - 根据 Knockout.js 中选择列表的选定选项显示或隐藏 HTML 元素?

javascript - observableArray 替换不更新 UI

javascript - knockout 不会从可观察数组中删除项目

javascript - 未调用内容脚本消息处理程序

JavaScript 库设计

javascript - 在浏览器中禁用 JS 时,setTimeout 在 Greasemonkey 用户脚本中不起作用

javascript - 将多个 knockout View 模型脚本绑定(bind)到一个 View