为什么Knockout为具有相同值的所有行填充列?

时间:2012-12-20 18:33:30

标签: javascript jquery data-binding knockout.js

这里有一些省略的东西:http://jsfiddle.net/YwTBk/

基本上,获取下图所需的只是编辑第一行。出于某种原因,Knockout使用相同的值填充该列下的所有行。它适用于amountnrAmount,当然还有计算出的total列。其他列都没有这个问题。

值得注意的是,将绑定从amount更改为$data.amount会导致计算列nrAmount不再起作用,但不会导致所有行得到人口。

A column getting filled down with the same value

为什么会发生这种情况,我该如何解决?

1 个答案:

答案 0 :(得分:0)

这是一个更新的小提琴“有效”,我想 - http://jsfiddle.net/YwTBk/2/。您对问题的描述与您引用的小提琴不符,因此很难确定。

我修复的更大问题如下:

  1. 正如Niko所提到的,您需要在视图模型顶部显示var self = this;
  2. 我在您的viewmodel中移动了addBlankRecord,以便addBlankRecord方法中的self引用可以正常工作。
  3. 我更新了populateBlankRecords方法,以便它引用ViewModel上的addBlankRecord
  4. 对于您的绑定,我更新了类别的绑定,并将removeRecord更新为$ parent.categories和$ parent.removeRecord,因为在Record视图模型中找不到这些绑定。
  5. 我猜测还有一些小问题是由于代码被剥离而造成的。其中一些被其他评论引用。

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

    这可以解决您的问题吗?如果没有,如果你能提供一个证明问题的小提琴,那将是非常有帮助的。