Я заметил проблему, когда выполняю тяжелые вычисления с ko observables.
Пример проблемы вы найдете на 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;
Кажется, это зависит от того, как я устанавливаю значение наблюдаемого. Почему это так? И как я могу это исправить?