Ich versuche, jQuery Autocomplete-Erweiterung in foreach Knockout-Schleife zu integrieren. Ich habe benutzerdefinierte Bindungen und automatische Vervollständigungen erstellt. Aber nach der automatischen Vervollständigung muss ich auch das beobachtbare Objektmodell aktualisieren und kann nicht herausfinden, wie es geht. Hier sind Sie mein Code:Update beobachtet Modell in benutzerdefinierten knockoutjs Bindung
<!-- ko foreach: items -->
<input data-bind="autoComplete: { source: '/products/item-search-ajax', options: { delay: 100, max: 20, minChars: 2, extraParams: { itcode: 1 }}, findCallback: $parent.findValueCallback }, value: PartNumber" type="text">
<!-- /ko -->
<script type="text/javascript">
ko.bindingHandlers.autoComplete = {
init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var settings = valueAccessor();
var source = settings.source;
var options = settings.options;
var findCallback = settings.findCallback;
$(element).autocomplete(source, options);
$(element).result(findCallback);
ko.bindingHandlers.value.init(element, valueAccessor, allBindings);
},
update: function(element, valueAccessor) {
var value = valueAccessor();
ko.bindingHandlers.value.update(element,valueAccessor);
}
};
function QuoteViewModel() {
var self = this;
self.items = ko.observableArray(...);
self.findValueCallback = function(event, data, formatted) {
// Need to update Item model here from autocomplete
};
}
</script>
jQuery UI Autocomplete? Das wurde gemacht. Verwenden Sie den vorhandenen Bindungshandler. http://gvas.github.io/knockout-jqueryui/autocomplete.html – Tomalak
Es ist eine andere automatische Autovervollständigung. Und ich könnte bereits eine automatische Vervollständigungserweiterung verbinden. Ich weiß einfach nicht, wie man das beobachtbare Modell von der benutzerdefinierten Bindung aktualisiert. –
Okay, welche Autocomplete-Bibliothek ist das? – Tomalak