JQuery Mobile에서 knockoutjs (매우 새로운 것)를 사용하고 있습니다. 필터링 된 결과를 바인딩하는 listview가 있습니다. 내가 처음 내 데이터를로드 한 후 나는 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 = "template : {name : 'myTemplate', foreach : filteredItems}, jqmRefreshList : filteredItems" –
감사합니다. 치료를 했어. BTW knockmeout은 훌륭한 사이트입니다. – jimjim