En lugar de cambiar la biblioteca de JavaScript, es posible considerar envolviéndolo en un personalizada Knockout Encuadernación. Es posible que ya necesite usar un enlace personalizado para su biblioteca de todos modos, especialmente si está utilizando cualquier enlace foreach
que genere/destruya elementos dinámicamente.
Una vez que tiene el encuadernado personalizado, tiene un lugar muy conveniente para activar el "cambio".
ko.bindingHandlers.jQueryPluginFunctionCall = {
init: function (element, valueAccessor, allBindingsAccessor) {
// Apply jQuery plugin to textarea
$(element).jQueryPluginFunctionCall();
// Subscribe to the value binding of the textarea, and trigger the change event.
allBindingsAccessor().value.subscribe(function() {
$(element).trigger('change');
});
// Clean up jQuery plugin on dispose
ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
// This will be called when the element is removed by Knockout or
// if some other part of your code calls ko.removeNode(element)
$(element).jQueryPluginFunctionCall('destroy');
});
}
}
Gracias por su respuesta. Soy consciente de esta solución. Sin embargo, estoy usando una biblioteca separada que no quiero modificar para este propósito. –
Eventualmente fui con esta solución porque francamente no pude encontrar otra manera de lograr el resultado deseado. Implicaba modificar la biblioteca que no me gusta, pero funciona ahora y eso es lo más importante. –