Knockout.js 强制取消每个绑定以更新html

Knockout.js 强制取消每个绑定以更新html,knockout.js,Knockout.js,从容器拖放项目后,我在更新foreach绑定时遇到问题: < div id="components-wrapper" data-bind="foreach: components" >. 。 组件-可观察耳环 拖放只影响HTML,因此组件保持不变,但HTML会更改。如何强制foreach绑定重新呈现组件以将HTML返回到其原始状态调用components.valueHasMutated()将强制ko刷新视图。调用components.valueHasMutated()将强制ko刷

从容器拖放项目后,我在更新foreach绑定时遇到问题:

< div id="components-wrapper" data-bind="foreach: components" >.
组件-可观察耳环


拖放只影响HTML,因此组件保持不变,但HTML会更改。如何强制foreach绑定重新呈现组件以将HTML返回到其原始状态

调用components.valueHasMutated()将强制ko刷新视图。

调用components.valueHasMutated()将强制ko刷新视图。

敲除的一般思想是使用ViewModel驱动显示(html),因此在drop事件中,您应该有代码组件。add(new Component()),这应该会更新html。

敲除的一般思想是使用ViewModel驱动显示(html),因此在删除事件中,您应该有代码组件。添加(new Component()),这应该会更新html。

TLDR:我发现的唯一可靠的方法是使用foreach绑定强制视图刷新:

var tmp = model.foo(); //save the observable current value
model.foo([]);         //assign an empty array to the observable
model.foo(tmp);        //the foreach binding will re-render the list

我有一个类似的问题,一个可观察的“页面”对象数组绑定到一个带有“foreach”的ul。foreach绑定对数组中页面的“重新排序”没有反应。它确实对推送和移除做出了部分反应:它将呈现/移除添加/移除的元素,但将呈现的foreach保留为相同的旧顺序。在可观察数组上调用.valueHasMutated()无效,但上面的方法成功了。

TLDR:我发现使用foreach绑定强制视图刷新的唯一可靠方法是:

var tmp = model.foo(); //save the observable current value
model.foo([]);         //assign an empty array to the observable
model.foo(tmp);        //the foreach binding will re-render the list
我有一个类似的问题,一个可观察的“页面”对象数组绑定到一个带有“foreach”的ul。foreach绑定对数组中页面的“重新排序”没有反应。它确实对推送和移除做出了部分反应:它将呈现/移除添加/移除的元素,但将呈现的foreach保留为相同的旧顺序。对可观察数组调用.valueHasMutated()无效,但上面的方法成功了