ich etwas Hilfe brauchen hier: https://jsfiddle.net/vhaurnpw/Knockout beobachtbaren Array nicht neu rendern meiner Liste
Ich möchte eine einfache Liste zu tun, die durch den Eingang auf filterbar und aktualisiert sich ..
JS/Knockout:
var viewModel = {
query: ko.observable(''),
places: ko.observable(data),
search: function(value) {
viewModel.places = [];
console.log(value)
for (var i = 0; i < data.length; i++) {
if(data[i].name.toLowerCase().indexOf(value.toLowerCase()) >= 0) {
viewModel.places.push(data[i]);
}
console.log(viewModel.places);
}
}
};
viewModel.query.subscribe(viewModel.search);
ko.applyBindings(viewModel);
HTML:
<form acion="#" data-bind="submit: search">
<input placeholder="Search" type="search" name="q" data-bind="value: query, valueUpdate: 'keyup'" autocomplete="off">
</form>
<ul data-bind="foreach: places">
<li>
<span data-bind="text: name"></span>
</li>
</ul>
Liste wird gerendert, aber wenn Sie etwas eingeben, zeigt es Ihnen nicht das Ergebnis.
Stattdessen, wenn Sie die Konsole suchen, sehen Sie die console.log und es aktualisiert sich gut!
also wie aktualisiere ich meine HTML? :(
Sie setzen Observablen von ihnen fordern. Diese Zeile 'viewModel.places = [];' muss 'viewModel.places ([])' sein. – user3297291
danke! das und das ObservableArray haben es zur Arbeit gebracht! – Shouldz