2012-04-10 2 views
2

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

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

Иллюстрация моей проблемы: http://jsfiddle.net/MikeAski/bBUB2/

Любая идея?

ответ

0

я, наконец, нашел выход: http://jsfiddle.net/MikeAski/bBUB2/7/

Это решение менее навязчивым на моделях, чем один из них предложил jsworkman. Не полностью удовлетворяет, но работает, как ожидалось ...: -/

Все еще заинтересованы в лучшей реализации, а не в решении проблем с обручем!

0

Есть две вещи, которые нужно сделать:

  1. отслеживать то, что были сообщения, первоначально там, так что вы можете пометить его как грязный, если один будет удален.
  2. Следите за новыми сообщениями, и если они удалены, отметьте эту часть чистой.

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

Вы также можете вести запись о новых сообщениях. Таким образом, когда вы удаляете, вы можете проверить, было ли оно добавлено (добавьте флаг isNew или что-то подобное). Затем, когда он удаляется, вы можете проверить, есть ли он isNew и пометить его еще раз, иначе это сделает его грязным.

Для этого вам понадобится функция, которая проверяет удаление в качестве первой грязной проверки, а затем проверяет сообщения, как вы сейчас.

+0

Возможно, я что-то пропустил (я бы очень хотел пропустить что-то ...), но мне кажется, что этот путь довольно неуклюжий. –

+0

Ну, другой вариант будет иметь функцию, которая сравнивает новый vs old. Прямо сейчас вы проверяете текущие записи только для обновлений (и если они удалены, вы вообще не проверяете их) – jzworkman