我正在使用jQuery Mobile的knockoutjs(非常新)。我有一個listview過濾結果綁定到。第一次加載我的數據後,我必須致電自動刷新列表視圖 - knockoutjs&JQuery Mobile
$('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 }" />
我的淘汰賽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');
}
我相信,有一些非常愚蠢的,我很想念......
謝謝你爲你的時間。
謝謝,我遇到過這個,但我不知道如何將這個綁定到我的foreach? – jimjim
真的,你可以把它放在任何元素上,甚至是身上。如果你想保留它的模板,那麼你可以這樣做:'data-bind =「template:{name:'myTemplate',foreach:filteredItems},jqmRefreshList:filteredItems」' –
非常感謝RP!工作過一種享受。 BTW knockmeout是一個偉大的網站。 – jimjim