Javascript 为什么敲除为所有具有相同值的行填充列?

Javascript 为什么敲除为所有具有相同值的行填充列?,javascript,jquery,data-binding,knockout.js,Javascript,Jquery,Data Binding,Knockout.js,这里有一些遗漏的东西: 从本质上讲,获得下图所需的只是编辑第一行。出于某种原因,Knockout是用相同的值填充该列下的所有行。它发生在金额,nrAmount,当然还有计算的总计列。其他列都没有这个问题 值得注意的是,将绑定从amount更改为$data.amount会使计算列nrAmount不再工作,但不会导致填充所有行 为什么会发生这种情况?我该如何修复它?我想,这是一个“有效”的更新提琴-。你对问题的描述与你提到的小提琴不符,所以很难说清楚 我解决的更大问题如下: 正如Niko提到的,您

这里有一些遗漏的东西:

从本质上讲,获得下图所需的只是编辑第一行。出于某种原因,Knockout是用相同的值填充该列下的所有行。它发生在
金额
nrAmount
,当然还有计算的
总计
列。其他列都没有这个问题

值得注意的是,将绑定从
amount
更改为
$data.amount
会使计算列
nrAmount
不再工作,但不会导致填充所有行


为什么会发生这种情况?我该如何修复它?

我想,这是一个“有效”的更新提琴-。你对问题的描述与你提到的小提琴不符,所以很难说清楚

我解决的更大问题如下:

  • 正如Niko提到的,您需要
    var self=this位于viewmodels的顶部
    
  • 我在viewmodel中移动了addBlankRecord,以便addBlankRecord方法中的
    self
    引用可以工作
  • 我更新了populateBlankRecords方法,以便它引用ViewModel上的addBlankRecord
  • 对于您的绑定,我将categories和removeRecord的绑定更新为$parent.categories和$parent.removeRecord,因为在Record viewmodel中找不到这两个绑定
  • 我猜还有几个较小的问题是从代码中剥离出来的结果。其中一些被其他评论引用

    • removeRecord、GetDepartments和GetCategories方法不存在
    • 没有表HTML标记
    • 没有对jQuery或KnockoutJS的引用

    这能解决你的问题吗?如果没有,如果您能提供一个小提琴来演示这个问题,那将非常有帮助。

    绑定语法在我看来很好。问题似乎在别的地方。由于您的小提琴不完整,它可能位于缺少的部件中。可能是另一个事件,或者是订阅导致了更新?@adaptive我真正忽略的是填充类别和部门可观察数组。我还将
    放在定义为
    中。HTML中关于“amount”一词的所有JavaScript代码和绑定都在这张小提琴上。我对这件事困惑了好一阵子。我想我会为它写一个测试用例。你的小提琴根本不起作用,你甚至没有包括敲除。至少有一个主要问题:你总是用
    self=this开始函数定义。如果不使用
    var self=this
    ,这个变量
    self
    将是全局变量,因此下次调用这些函数时会覆盖它。@Niko基本上就是这样。当时的问题只是调整绑定。这就是我没有完全理解代码示例的原因!如果你想复制/粘贴它作为答案,我会将其标记为解决方案。这些正是我所做的更改。谢谢你把它总结成一个答案。你得到了答案。:)