Używam knockoutjs (bardzo nowego) z JQuery Mobile. Mam widok listy, do którego wiążę filtrowane wyniki. Po załadowaniu moich danych po raz pierwszy muszę zadzwonić pod numerAutomatyczne odświeżanie widoku listy przy zmianie - knockoutjs i JQuery Mobile
$('ul').listview('refresh');
, aby JQM mógł zmienić swoją listę, działa to znakomicie.
Jednak po odfiltrowaniu mojej listy, jest ona ponownie zgłaszana i ponownie traci styl i nie mogę ustalić, od której strony należy ponownie odświeżyć.
Moje html wygląda następująco:
<p>Filter: <input data-bind="value: filter, valueUpdate: 'afterkeydown'" /></p>
<ul data-role="listview" data-theme="g" data-bind="template: {name: 'myTemplate', foreach: filteredItems }" />
My Knockout JS jest:
var car = function (name, make, year) {
this.name = name;
this.make = make;
this.year = year;
}
var carsViewModel = {
cars: ko.observableArray([]),
filter: ko.observable()
};
//filter the items using the filter text
carsViewModel.filteredItems = ko.dependentObservable(function() {
var filter = this.filter();
if (!filter) {
return this.cars();
} else {
return ko.utils.arrayFilter(this.cars(), function (item) {
return item.make == filter;
});
}
}, carsViewModel);
function init() {
carsViewModel.cars.push(new car("car1", "bmw", 2000));
carsViewModel.cars.push(new car("car2", "bmw", 2000));
carsViewModel.cars.push(new car("car3", "toyota", 2000));
carsViewModel.cars.push(new car("car4", "toyota", 2000));
carsViewModel.cars.push(new car("car5", "toyota", 2000));
ko.applyBindings(carsViewModel);
//refresh the list to reapply the styles
$('ul').listview('refresh');
}
Jestem pewien, że coś jest bardzo głupie, że mi brakuje ...
Thank za twój czas.
Dzięki, natknąłem się na to wcześniej, ale nie jestem pewien, jak zastosować to powiązanie z moim foreach? – jimjim
Naprawdę możesz umieścić to na dowolnym elemencie, nawet na ciele. Jeśli chcesz zachować go za pomocą szablonu, możesz zrobić: 'data-bind =" template: {nazwa: 'myTemplate', foreach: filteredItems}, jqmRefreshList: filteredItems "' –
Wielkie dzięki! Pracował uczta. BTW Knockmeout to świetna strona. – jimjim