Я просто ищу быстрый ответ, так как я не могу решить его прямо сейчас.ko.observable обновляется через функцию
Я хочу обновить наблюдаемое в зависимости от значений других других наблюдаемых через функцию, которая управляет зависимыми наблюдаемыми.
Предположим, у меня есть объект, содержащий 2 поля. 1 из них также является объектом, второй - наблюдаемым, который я хочу обновить.
function Control(elem) {
var self = this;
self.element = element;
self.calc = ko.observable();
}
Тогда у меня есть функция, которая делает что-то рассматривает элемента и придумывает значение.
function Control(elem) {
var self = this;
self.element = element;
self.calc = ko.observable('10');
self.doSomething = function() {
var dummy = 0;
if (self.element.number() === 1)
dummy = self.element.value + 10;
else
dummy = self.element.value + '+ 10';
return dummy;
}
}
Как я могу обновить известково с результатом, возвращаемой функцией, каждый раз, когда один из числа или значения приличий элемента изменяется?
Я уже говорил, что я не хочу, чтобы обновить известково непосредственно, заменив его фиктивной, потому что это сделало бы наблюдаемый спусковой крючок слишком много раз.
JsFiddle: http://jsfiddle.net/razvangl/cf3kB/
Знаете ли вы о вычисленных наблюдаемых? http://knockoutjs.com/documentation/computedObservables.html Вы записываете обработчики для операций 'read' и' write' и изменяете все, что вам нужно внутри. –
, если у вас есть наблюдаемые, вы можете подписаться на изменения с помощью пользовательской функции, проверьте http://knockoutjs.com/documentation/observables.html#explicitly_subscribing_to_observables –
@razvan, я заметил, что ваша скрипка на самом деле не работает. В нем есть несколько ошибок. Я не работал с Knockout довольно давно, поэтому я забыл, как исправить привязку к шаблону, но остальное должно быть достаточно легко исправить. – jonhopkins