Мне нужно клонировать некоторые данные из основного источника в ViewModel в диалог. Причина в том, что пользователь может отменить диалог, и я не хочу, чтобы мастер отражал эти отмененные изменения.
Я создаю клонированную копию основных данных в диалоговом окне, и привязки данных устанавливаются так, чтобы подобрать свойства localEdited. *. Если пользователь нажимает «ОК», я пытаюсь сохранить данные обратно в мастер, если они отредактированы, в противном случае отправлять данные, если они новые.
editItem: function(data) {
// clone a temporary copy for the dialog
this.localEdited = ko.mapping.fromJS(ko.toJS(data));
$("#dlgAdd").dialog("open");
},
Вышеуказанное в настоящее время работает, однако, если я щелкну другой элемент в мастере, диалоговое окно не будет отображать обновленные значения. Как будто ko.mapping.fromJS работает только один раз, а потом никогда. Он всегда подбирает первые значения. Как мне обойти эту проблему? Я чувствую, что мне нужно заново связать значения, но весь смысл нокаутом в том, что это не нужно делать.
Как мне также сохранить данные обратно в родительский. Я думаю, у меня может быть та же проблема, что и выше.
Кстати, я использую KnockoutJS 1.2.1.