【发布时间】:2014-03-29 16:51:15
【问题描述】:
当我对 ko observables 进行一些繁重的计算时,我注意到了一个问题。
您将在http://jsfiddle.net/dundanox/AyU8y/1/ 找到一个问题示例
为了简短起见,我有一个输入字段和一个可观察的“val”
<input data-bind="value: val">
现在,有两种方法可以改变 observable 的值。
1. 在输入字段中手动输入(新)值
2. 通过脚本分配(新)值,例如ViewModel.val(3.14)
设置一个值后,我会进行一些繁重的计算,例如
var val = ViewModel.val(); // get current value, e.g. 3.14
for(var sum=0, ii=0; ii > imax; ii++)
sum += val
如果我通过脚本设置值(第二种方法),一切都很好。 但是如果我手动设置一个值(第一种方法),计算时间会爆炸多次!
我认为这是不应该的奇怪行为。但我找不到问题。这是knockoutJS中的问题吗?
为了澄清它,使用以下代码一切都很好。
var val = 3.14;
for(var sum=0, ii=0; ii > imax; ii++)
sum += val
我对线路的理解
var val = ViewModel.val(); // get current value, e.g. 3.14
应该和我写的一样
var val = 3.14;
这似乎取决于我如何设置 observable 的值。为什么会这样?我该如何解决?
【问题讨论】:
标签: javascript performance knockout.js observable