Сортируемый список с GoAngular

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

Знаете ли вы, как изменить порядок поддержки GoAngular? Важно, чтобы обновления были инкрементными и не воссоздали DOM всего списка каждый раз.

1 ответ

Решение

Это действительно зависит от размера вашего списка, вы можете использовать два подхода (ни один не идеален), оба включают добавление position Свойство вашей модели GoAngular (или создание модели специально для отслеживания позиций):

Давайте сделаем это нашей отправной точкой:

[
 { title: 'Item A', position: 1 },
 { title: 'Item B', position: 2 },
 { title: 'Item C', position: 3 },
 { title: 'Item D', position: 4 },
]

Если список небольшой (в сотнях элементов), вы можете обновлять позиции по мере их изменения, поэтому, если "Элемент B" был перемещен после "Элемента C", вы обновите позицию (используя $set) для предметов B & C:

[
 { title: 'Item A', position: 1 },
 { title: 'Item C', position: 2 },
 { title: 'Item B', position: 3 },
 { title: 'Item D', position: 4 },
]

В качестве альтернативы вы можете вставить элемент в середине двух позиций, это более удобно в больших списках. Если "Элемент B" снова будет перемещен после "Элемента C", вы обновите позицию только "Элемента B". В этом примере это будет (3+4) / 2 = 3,5:

[
 { title: 'Item A', position: 1 },
 { title: 'Item C', position: 3 },
 { title: 'Item B', position: 3.5 },
 { title: 'Item D', position: 4 },
]

Это помогает?

Другие вопросы по тегам