#knockout.js
#knockout.js
Вопрос:
Каков наилучший способ обработки наблюдаемого массива, который может быть зафиксирован / выброшен в KnockoutJS?
Я достиг этого раньше с помощью идеи ProtectedObservable, но это было для одной записи данных, а не для массива.
Просто интересно, как лучше продвигаться вперед. Для моего проекта требуется диалоговое окно со всеми контактами с адресами электронной почты и список выбранных. По мере добавления из списка слева они удаляются и добавляются в список справа.
При нажатии кнопки «ok» они добавляются в поле Кому:, но при нажатии кнопки «Отмена» списки восстанавливаются до их предыдущего состояния (которое уже могло быть заполнено ранее).
Ответ №1:
Как насчет чего-то вроде этого:http://jsfiddle.net/rniemeyer/PAzVk /
При этом используется observableArray, который поддерживает «моментальные снимки». Вы можете сохранить копию базового массива и восстановить его, когда вам нужно.
ko.snapShotObservableArray = function(initialData) {
var _snapShot = initialData;
var result = ko.observableArray(initialData || []);
result.takeSnapShot = function() {
_snapShot = this().slice(); //take a copy of the underlying array
};
result.restoreSnapShot = function() {
this(_snapShot.slice());
}
return resu<
}
В примере вы бы использовали это для своего массива доступных пользователей, массива выбранных пользователей и массива пользователей в строке «Кому». Затем кнопка отмены восстанавливает каждый массив обратно в точку, с которой вы сделали последний снимок.
Комментарии:
1. Как всегда, фантастическое решение. Спасибо, Райан.