В настоящее время я создаю клиентскую часть проекта Flex/PHP с использованием шаблона модели представления.Обработка состояния объекта домена на стороне клиента в модели представления
То, что я пытаюсь достичь:
я в настоящее время имеют вид отображения нередактируемую информации о объекте домена под названием узла. В зависимости от того, является ли узел редактируемым и у пользователя есть права, открывается дополнительное представление, в котором можно внести изменения в этот объект. Любые внесенные изменения передаются только серверу после того, как пользователь примет решение «Сохранить изменения». Если изменения внесены в NodeA, и пользователь переходит к другому NodeB, не сохраняя их, NodeA возвращается в исходное состояние.
Дизайн:
У меня есть ПМ для информации зрения, держащего ссылку на текущий узел. PM для представления редактирования расширяется из этой информации PM, добавляя методы для внесения изменений в обернутый объект Node. Оба PM имеют ту же ссылку на Node, что и в них, и все поля в представлениях информации/редактирования привязаны к узлу через их PM.
Проблема:
Когда пользователь вносит изменения в но узел А их не совершали, я не могу думать о элегантном решении вернуться к исходному состоянию. В принципе, до сих пор я думал о том, чтобы хранить отдельные копии значений в редакторе PM, либо клонировать создание новой ссылки на Node, либо через идентичный набор свойств узла. Из этих двух первое похоже на лучшую идею, потому что узел уже содержит логику домена, но мне интересно, является ли создание клонов уникальных объектов домена плохой практикой, даже если она используется в ограниченной области.
Представления имеют свои собственные экземпляры PM, но оба PM содержат ссылку на тот же экземпляр узла, который вводится в оба.Если бы я должен был обслуживать их отдельными экземплярами одинакового узла, я делаю радикальные изменения в своей модели, поскольку я храню карту/пул экземпляров Node (по id). – Stiggler
Ваш вопрос заставил вас казаться, поскольку у вас есть два вида для двух узлов. Почему два представления с каждым собственным экземпляром PM ссылаются на один и тот же узел? Если это так, возможно, ваши две точки зрения представляют собой две части одного и того же интерфейса, и в этом случае у них есть только один PM для обоих. –
Если бы у меня был только один PM для обоих видов, как бы решить эту проблему? Я действительно не понимаю, как это имеет значение. – Stiggler