Динамически связанные элементы с applyBindingsToNode не реагируют на изменения
В этом примере у меня есть динамически связанный вход и div в одно и то же свойство.
Но при изменении текста на входе изменения не отражаются в элементе div.
http://jsfiddle.net/rpuri/Bcps5/
ko.applyBindingsToNode(document.getElementById('input-health'), {
value: vm.status(),
valueUpdate: 'afterkeydown'
});
Декларативное связывание не является вариантом для меня, потому что мне нужно связать с общими элементами в частичных представлениях (ASP.NET MVC).
Спасибо
Ответы
Ответ 1
Вы привязываетесь к значению наблюдаемого вместо наблюдаемого.
Try:
ko.applyBindingsToNode(document.getElementById('health'), {
text: vm.status, // <- not invoking status, binding to the observable itself.
valueUpdate: 'keydown'
});
ko.applyBindingsToNode(document.getElementById('input-health'), {
value: vm.status,
valueUpdate: 'keydown'
});
http://jsfiddle.net/hwQsm/
Ответ 2
Я использовал функцию препроцесса (нокаут 3).
<input type="text" data-bind="value: LastName, vuClass: 'text'" />
ko.bindingHandlers.vuClass = {
preprocess: function (value, name, addBindingCallback) {
if (value == "'text'") {
addBindingCallback('valueUpdate', "['afterkeydown', 'blur']");
}
// ...
// Check other values.
// ...
return value;
}
};