Knockout动态更新observableArray值

时间:2014-05-06 10:55:46

标签: javascript jquery knockout.js knockout-2.0

我的淘汰应用程序中有以下结构:

  • 计算值,它是两个可观察量(comp1)
  • 的总和
  • observableArray(默认为空)
  • 通过单独的viewModel函数推送到observableArray的一组数据

我的问题在于,当计算出的observable(comp1)被推入数组时,当它在表中显示时(通过单独的viewModel函数),它的值不会发生变化当它在主视图中更新时。

我已经设置了一个codepen来更好地解释问题并使其更清楚地理解,因为我真的不认为我已经很好地解释了这个问题并且它已经解决了这个问题。有点复杂,只能通过文字来解释!

简而言之:在主视图中更新后,(comp1)的值不会在表格中更新(从observableArray生成)。

如果您有任何不确定之处,请询问,但我认为一旦您查看Codepen,一切都应该更加清晰。

http://codepen.io/anon/pen/nwgGB

1 个答案:

答案 0 :(得分:3)

因为你传递了maths_total(self.maths_total())的解包值。这种方式tableView不知道该值何时发生变化。相反,你应该传递实际的observable:

self.table_totals.push(new tableView('column 1', 15, self.maths_total, 45));

然后检查tableView

中的变量
self.val_2 = ko.isObservable(val2) ? val2 : ko.observable(val2)

http://codepen.io/anon/pen/qFsgu