Лучшая практика для управления / контроля состояния объекта с помощью двухсторонней привязки данных с использованием Polymer

Давайте попробуем это объяснение еще раз...

Я новичок в полимере (и возвращаюсь к веб-разработке после относительно долгого отсутствия), и мне интересно, какой рекомендуемый подход может быть для более точного управления состоянием объекта при использовании двухсторонней привязки данных. В настоящее время я использую объекты rest API (json). Мой вопрос заключается в том, сохраняет ли полимер копию исходного объекта перед инициированием обновлений свойств/атрибутов связанного объекта... так что можно было бы легко отменить изменения? Хотя часто желательно, чтобы двухсторонняя привязка данных работала по своей магии, бывают случаи, когда я хотел бы предотвратить/отложить изменения объекта/DOM до тех пор, пока пользователь не одобрит изменения (например, через компонент бумажного диалога). Я полагаю, что можно сделать временную копию объекта и привязать поля к этой версии, а затем сохранить изменения обратно в исходный объект только после одобрения пользователя. В любом случае, мне было бы интересно услышать мысли и увидеть пример или два рекомендуемых подхода (особенно, если я отклоняюсь от своих идей!)


person sinjins    schedule 04.09.2014    source источник


Ответы (1)


Я полагаю, можно было бы сделать временную копию объекта и привязать поля к этой версии, а затем сохранить изменения обратно в исходный объект только после одобрения пользователя.

Этот.

Учтите, что модели представлений существенно отличаются от чистых моделей данных (иногда называемых бизнес-данными). Часто различия не имеют значения, и их можно использовать взаимозаменяемо. Однако помните о сценариях, в которых модель представления отличается (хорошим примером являются незафиксированные пользовательские правки).

Понятие редактора полей, требующего одобрения пользователя, ориентировано исключительно на пользовательский интерфейс/представление. Какими бы данными ни управляли в этой модальности, они находятся исключительно в области представления, а выборка/фиксация бизнес-данных должна быть дискретной.

person Scott Miles    schedule 08.09.2014
comment
Спасибо, Скотт. Однако не приводит ли это к описанной здесь проблеме: stackoverflow.com/questions/728360/ . Если да, то мне это кажется неуклюжим. Возможно, есть лучший способ клонировать объект с помощью javascript, о котором я не знаю? (не полагаясь на фреймворки/jquery и т.д.) - person sinjins; 09.09.2014
comment
Закончился с использованием подхода JSON stringify: /20662319/ - person sinjins; 09.09.2014
comment
Yikes, подход stringify неэффективен. В любом случае, эти проблемы связаны с копированием произвольных объектов javascript. В описанном сценарии обычно что-то известно о данных благодаря наличию для них пользовательского интерфейса. Трудно делать предложения, не зная больше о вашем проекте, но, возможно, попробуйте решить проблему, используя меньшие фрагменты данных вместо оптовых графов объектов. Например. вместо того, чтобы заранее дублировать весь объект «клиент», редактор «адреса» дублирует только поля «адрес». - person Scott Miles; 10.09.2014