JQuery Mobileでknockoutjs(非常に新機能)を使用しています。私はフィルター結果をバインドするリストビューを持っています。私が初めて自分のデータをロードした後、私はJQMは私のリストのスタイルを変更するために変更のリストビューを自動的に更新 - knockoutjsとJQuery Mobile
$('ul').listview('refresh');
を呼び出す必要があり、これは素晴らしい作品。
私のリストをフィルタリングすると、それが再レンダリングされ、スタイルが再び失われ、どこでリフレッシュを再度呼び出すべきかわかりません。
次のように私の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 ="テンプレート:{name: 'myTemplate'、foreach:filteredItems}、jqmRefreshList:filteredItems " –
ありがとうRP!治療をしました。 BTW knockmeoutは素晴らしいサイトです。 – jimjim