Учитывая вычисленное свойство
vm.checkedValueCount = ko.computed(function(){
var observables = getCurrentValues(); //an array of ko.observable[]
return _.filter(observables, function(v) { return v() }).length;
});
предположим, что getCurrentValues () может возвращать разные наборы наблюдаемых, которые модифицируются в другом месте кода (и происходит из более сложной структуры, чем наблюдаемый массив).
Мне нужно checkedValueCount
обновляться всякий раз, когда
- изменяется одна из его зависимостей
- getCurrentValues () возвращает другой набор наблюдаемых.
Проблема заключается в том, что ko.computed
, кажется, memoize последнее возвращаемое значение и обновляется только при обновлении зависимостей. Это обрабатывает первый случай, но не последний.
То, что я ищу, - это способ принудительного запуска checkedValueCount для повторного запуска. Что-то, что я могу использовать, например:
changeCurrentValues();
vm.checkeValueCount.recalculate();
Проще говоря, учитывая, что у меня
a = ko.computed(function() { return Math.random() })
как я могу принудительно вызвать a()
дважды, чтобы возвращать разные значения.