Я обрабатываю аналогичные случаи, сохраняя исходные данные в свойстве XML объекта Value («VO»), и сбрасываю все остальные значения свойств, когда требуется VO.
Итак, когда его сначала нужно просмотреть, я иду получить XML:
<Node>
<prop1>value</prop1>
<prop2>value</prop2>
<prop3>value</prop3>
<prop4>value</prop4>
</Node>
Когда я получаю XML, в моем обработчике результатов первое, что я делаю, это создаю экземпляр моего VO, устанавливаю свойство XML, а затем вызываю публичную функцию в отдельном классе для установки свойств VO:
private function getNodeResultHandler(event:ResultEvent):void
{
var myNode:Node = new Node();
myNode.xmlData = new XML(event.result);
nodeUtils.setNodeProperties(myNode);
}
public class nodeUtils
{
public function setNodeProperties(node:Node):void
{
var nodeXmlData:XML = node.xmlData;
myNode.prop1 = nodeXmlData.prop1;
myNode.prop2 = nodeXmlData.prop2;
myNode.prop3 = nodeXmlData.prop3;
myNode.prop4 = nodeXmlData.prop4;
}
}
Затем, каждый раз, когда вы переключаете представление в режим редактирования, вы вызываете ту же функцию для сброса свойств к значениям, хранящимся в XML.
Единственное, что вам нужно сделать, это сбросить этот XML каждый раз, когда пользователь вносит изменения в VO. Я обычно справляюсь с этим, передавая данные VO в том же формате в Save and Get, а затем сохраняя XML, как описано выше.
Обычно я делаю это в приложении Cairngorm MVC, поэтому у меня есть цепочка событий / команд для обработки всего этого, но вы можете поместить эту функциональность в любое количество классов или в сам класс VO, в зависимости от того, что проще для вас поддерживать.