Tôi đang sử dụng knockoutjs (rất mới với nó) với JQuery Mobile. Tôi có một listview mà tôi ràng buộc kết quả lọc. Sau khi tôi tải dữ liệu của mình lần đầu tiên, tôi phải gọiTự động làm mới xem danh sách trên thay đổi - knockoutjs & JQuery Mobile
$('ul').listview('refresh');
để JQM khôi phục lại danh sách của tôi, công trình này tuyệt vời.
Tuy nhiên khi tôi lọc danh sách của mình, nó được hiển thị lại và mất phong cách một lần nữa và tôi không thể tìm ra nơi để gọi lại làm mới.
html của tôi là như sau:
<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 là:
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');
}
Tôi chắc chắn rằng có cái gì đó rất ngớ ngẩn mà tôi đang thiếu ...
Thank bạn cho thời gian của bạn.
Cảm ơn, tôi đã xem xét điều này trước đây, nhưng tôi không chắc chắn làm thế nào để áp dụng ràng buộc này vào foreach của tôi? – jimjim
Thực sự bạn có thể đặt điều này trên bất kỳ yếu tố nào, kể cả cơ thể. Nếu bạn muốn giữ nó với mẫu của bạn, thì bạn có thể làm: 'data-bind =" template: {name: 'myTemplate', foreach: filtersItems}, jqmRefreshList: filtersItems "' –
Cảm ơn RP rất nhiều! Làm việc một điều trị. BTW knockmeout là một trang web tuyệt vời. – jimjim