我正在使用knockoutjs(非常新手)与JQuery Mobile。我有一个列表视图,我将过滤的结果绑定到它上面。在第一次加载完数据之后,我必须调用
为了让JQM重新设置我的列表样式,这很好用。然而,当我筛选列表时,它会重新渲染并且再次失去样式,我无法确定在哪里再次调用刷新。我的HTML如下:
我的 Knockout JS 是:
我确信我错过了某个非常傻的东西...谢谢您的时间。
$('ul').listview('refresh');
为了让JQM重新设置我的列表样式,这很好用。然而,当我筛选列表时,它会重新渲染并且再次失去样式,我无法确定在哪里再次调用刷新。我的HTML如下:
<p>Filter: <input data-bind="value: filter, valueUpdate: 'afterkeydown'" /></p>
<ul data-role="listview" data-theme="g" data-bind="template: {name: 'myTemplate', foreach: filteredItems }" />
我的 Knockout JS 是:
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');
}
我确信我错过了某个非常傻的东西...谢谢您的时间。
data-bind="template: {name: 'myTemplate', foreach: filteredItems }, jqmRefreshList: filteredItems"
。 - RP Niemeyer