Knockout.js는 데이터 바인딩과 상호 작용을 쉽게 구현할 수 있는 JavaScript 라이브러리입니다. 데이터 필터링과 정렬은 Knockout.js에서 많이 사용되는 기능 중 하나입니다. 이 기능을 사용하여 데이터를 동적으로 필터링하고 정렬할 수 있습니다.
데이터 필터링을 구현하는 방법은 간단합니다. 먼저, 필터링하려는 데이터를 관리하는 Observable 배열을 생성합니다. 그런 다음, 필터링을 위해 사용자 입력 또는 다른 조건에 따라 데이터를 걸러내는 함수를 작성합니다. 이 함수는 computed Observable로 정의됩니다.
아래는 데이터 필터링을 구현하는 예제입니다:
// ViewModel
function ViewModel() {
var self = this;
self.allItems = ko.observableArray([
{ name: 'Apple', type: 'Fruit', price: 1.99 },
{ name: 'Carrot', type: 'Vegetable', price: 0.99 },
{ name: 'Banana', type: 'Fruit', price: 0.79 },
// ... other items
]);
self.filterVal = ko.observable('');
self.filteredItems = ko.computed(function () {
var filter = self.filterVal().toLowerCase();
if (!filter) {
return self.allItems();
} else {
return ko.utils.arrayFilter(self.allItems(), function (item) {
return item.name.toLowerCase().indexOf(filter) !== -1 ||
item.type.toLowerCase().indexOf(filter) !== -1;
});
}
});
}
// Apply bindings
ko.applyBindings(new ViewModel());
위의 코드에서 allItems
는 조건에 따라 필터링할 데이터를 담고 있는 Observable 배열이며, filterVal
은 사용자 입력을 담는 Observable입니다. filteredItems
는 데이터를 필터링한 결과를 담는 computed Observable입니다. 이 computed Observable은 필터링된 데이터를 반환하며, 사용자 입력이 변경될 때마다 자동으로 갱신됩니다.
데이터 정렬을 구현하는 방법도 유사합니다. 이 경우에는 필터링과 마찬가지로 데이터를 관리하는 Observable 배열을 생성하고, 정렬 기준을 바꿀 수 있는 사용자 입력을 감지하고 이에 따라 데이터를 정렬하는 함수를 작성합니다.
아래는 데이터 정렬을 구현하는 예제입니다:
// ViewModel
function ViewModel() {
var self = this;
self.allItems = ko.observableArray([
{ name: 'Apple', type: 'Fruit', price: 1.99 },
{ name: 'Carrot', type: 'Vegetable', price: 0.99 },
{ name: 'Banana', type: 'Fruit', price: 0.79 },
// ... other items
]);
self.sortBy = ko.observable('name');
self.sortedItems = ko.computed(function () {
var sortBy = self.sortBy();
return self.allItems().sort(function (a, b) {
return a[sortBy]().localeCompare(b[sortBy]());
});
});
}
// Apply bindings
ko.applyBindings(new ViewModel());
위의 코드에서 allItems
는 정렬할 데이터를 담고 있는 Observable 배열이며, sortBy
는 정렬 기준을 나타내는 Observable입니다. sortedItems
는 데이터를 정렬한 결과를 담는 computed Observable입니다. 이 computed Observable은 데이터를 정렬한 후 반환하며, 정렬 기준이 변경될 때마다 자동으로 갱신됩니다.
이렇게 Knockout.js를 사용하면 데이터 필터링과 정렬을 간편하게 구현할 수 있습니다. 더 자세한 내용은 Knockout.js 공식 문서(https://knockoutjs.com/)를 참조하시기 바랍니다.