2012-05-18 2 views
1

Что я делаю: Опрос удаленных источников дат каждые 30 секунд для данных. I then do self.MyCollection(newData);.Обновление только измененных элементов в наблюдаемом массиве при извлечении из источника данных

Моя проблема: поскольку я мог отфильтровать массив или расширить определенный элемент массива в пользовательском интерфейсе, я не хочу, чтобы он сбрасывался каждые 30 секунд.

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

Кто-нибудь знает, как избежать перезапуска ui при изменении основного наблюдаемогоArray - или - как избежать изменения всего наблюдаемогоArray при изменении только одного или менее базового элемента?

ответ

0

Я решил это путем простого повторения элементов в наблюдаемом массиве и изменил значения (которые были самими наблюдаемыми). Это обновлено только <li> в списке, а не целое <ul>.

1

Я не знаю, что именно вы хотите сделать, но в документации официальный knockoutjs описывает подобную проблему: http://knockoutjs.com/documentation/plugins-mapping.html

В разделе Customizing object updating using “update”:

Вы также можете настроить, как объект обновляется, указав обратный вызов обновления. Он получит объект, который он пытается обновить, и объект опций, который идентичен тому, который используется для обратного вызова create .

+0

У меня не было времени, чтобы протестировать это решение. Мне придется вернуться и сделать это в свободное время, если кто-нибудь еще попробует это и скажет, что это работает, я приму ответ. Я отказался от идеи обновить лежащий в основе наблюдаемый массив, пока пользовательский интерфейс используется. – Anders