【问题标题】:How to avoid binding table knockout in computed array如何避免计算数组中的绑定表敲除
【发布时间】:2015-06-14 19:46:36
【问题描述】:

我有一个表,我在其中加载 arrayA 的值,其中一个是 ko.computed Array,哪个取决于其他 arrayB 的值。

当我删除数组 B 的一个元素时,数组 A 会自动更新为数组 B 的新值。

问题是例如:

<tbody data-bind="foreach: arrayA()"> 
        <tr><td data-bind="text: $data.value"></td></tr>
</tbody>

javascript:

arrayB.remove(data);

当我在 html 中执行此操作时,表格会重新加载 arrayA 的先前值,而不会删除元素 + ArrayA 的新值。

如何避免使用 arrayA 的先前值 + 计算的 arrayA 的新值重新加载表?我只想重新加载计算出的 arrayA 的新值,而不需要以前的内容。

【问题讨论】:

  • 你能给我们一个工作小提琴吗?
  • 能否请您包含所有相关代码?我的第一个猜测是,您的 ko.computed 中有一些可疑之处。
  • 很抱歉,我的代码很长。我有 1 个 ajax 调用,其中一个调用使用 mapping.fromJS 的映射来恢复构建的 observableArray,其中构建了 arraycomputed。
  • 恐怕没有它,我们无法为您提供帮助。请以 JSFiddle 或嵌入式 sn-p 的形式提供您的代码的最小摘录。除此之外 - foreach: arrayA() 应该是 foreach: arrayA。你想让你的foreach 访问你的computed 本身,而不是computed结果

标签: knockout.js


【解决方案1】:

如果你创建了一个ko.computed,它就会成为一个依赖的可观察对象,因此对计算对象正在观察的可观察对象所做的任何更改都会导致它更新。这就是它的设计工作方式,它被称为依赖链。

我建议寻找一种替代解决方案,该解决方案不使用计算出的 observables 来实现您正在寻找的东西。

http://knockoutjs.com/documentation/computedObservables.html

【讨论】:

    猜你喜欢
    • 2012-04-11
    • 2013-03-12
    • 2015-07-18
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 2020-08-01
    • 1970-01-01
    相关资源
    最近更新 更多