Я пытаюсь создать сетку таблицы html с сортировкой на стороне сервера и пейджингом с использованием нокаута.Нокаут динамический css привязка в foreach
Я основывал свою работу на нокауте простойGrid пример.
Пока это работает, но у меня есть проблема с привязкой класса css, чтобы показать, какой столбец выбран для сортировки.
Вот мой код:
HTML:
<thead>
<tr data-bind="foreach: columns">
<th data-bind="text: headerText, click: $parent.sortBy, css: $parent.sortClass($data)"></th>
</tr>
</thead>
Нокаут класс:
viewModel: function (configuration) {
...
// Sort properties
this.sortProperty = configuration.sortProperty;
this.sortDirection = configuration.sortDirection;
...
this.sortClass = function (data) {
return data.propertyName == this.sortProperty() ? this.sortDirection() == 'ascending' ? 'sorting_asc' : 'sorting_desc' : 'sorting';
};
}
Мой главный класс Нокаут:
this.gridViewModel = new ko.simpleGrid.viewModel({
data: self.items,
pageSize: self.itemsPerPages,
totalItems: self.totalItems,
currentPage: self.currentPage,
sortProperty: self.sortProperty,
sortDirection: self.sortDirection,
columns: [
new ko.simpleGrid.columnModel({ headerText: "Name", rowText: "LastName", propertyName: "LastName" }),
new ko.simpleGrid.columnModel({ headerText: "Date", rowText: "EnrollmentDate", propertyName: "EnrollmentDate" })
],
sortBy: function (data) {
data.direction = data.direction == 'ascending' ? 'descending' : 'ascending';
self.sortProperty = data.propertyName;
self.sortDirection = data.direction;
// Server call
$.getGridData({
url: apiUrl,
start: self.itemStart,
limit: self.itemsPerPages,
column: data.propertyName,
direction: data.direction,
success: function (studentsJson) {
// data binding
self.items(studentsJson.gridData);
}
});
},
}
При этом, первый раз данные привязывают меня Класс css правильно применяется. Но когда я нажимаю на столбец, класс css не будет обновляться.
У вас есть идея, что я делаю неправильно?
Ах да, идея вы даете здесь также передавать сортировочную информацию в столбце класс. Ницца. Я скоро проверю ваше решение, чтобы принять ваш ответ. Благодаря! – Dragouf