Нокаут с картографированием.fromJS и шаблон
У меня есть таблица, обновляемая с каждой записью в моей модели, и два события, запускаемые при удалении и добавлении в массив. hideElement вызывает функцию jquery "fadeOut", а showElement-функцию jquery" fadeIn", чтобы создать отличный эффект затухания/затухания.
<tbody data-bind='template: { foreach: entries,
beforeRemove: hideElement,
afterAdd: showElement }'>
Моя модель выглядит так:
var Model = function() {
self.entries = ko.mapping.fromJS([]);
this.getData = function() {
$.ajax({
url: "/test",
type: "GET",
success: function(response) {
ko.mapping.fromJS(response, self.entries);
...
this.showElement = function(elem) {
if(elem.nodeName == "TR") {
$(elem).fadeIn(500);
}
};
this.hideElement = function(elem) {
if(elem.nodeName == "TR") {
$(elem).fadeOut(500);
};
};
...
Проблема в том, что каждый раз, когда ko.mapping.fromJS(response, self.entries)
вызывается в ответе ajax, кажется, что knockout удаляет/добавляет записи, даже если они точно такие же. Из-за этого ... вызывается showElement / hideElement, и элементы в моей таблице "мигают", так как они удаляются/добавляются каждый вызов ajax.
Предполагается, что это так или я использую его неправильно?