當我使用ko觀測值進行一些繁重的計算時,我發現了一個問題。敲除觀測數據的計算會導致計算時間變長
問題的一個例子,你會發現在http://jsfiddle.net/dundanox/AyU8y/1/
爲了簡化我有一個輸入字段和一個可觀察的「VAL」
<input data-bind="value: val">
現在,有更改值兩種方法的可觀察的。
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;
看來這取決於如何設置的可觀察的價值。爲什麼是這樣?我該如何解決它?