jsViews sort - как автоматически обновлять сортировку при изменении свойства - PullRequest
0 голосов
/ 15 апреля 2020

Просто посмотрите живой пример кода на сайте jsViews: https://www.jsviews.com/#jsvfortag @ jsvsortfilterrange

Если я изменю эту строку, добавив сортировку:

{^{for members sort='name' start=start-1 end=end}} 

Массив не пересортируется после заметного добавления в него элемента.

$.observable(team.members).insert(0, {name: "zzz this should be last"})

Есть идеи, как запустить сортировку после вставки элемента?

1 Ответ

0 голосов
/ 28 апреля 2020

Сортировка обновляет sh, когда происходит событие изменения массива. Установка sort='name' приведет к повторной сортировке, если вы нажмете [Добавить] или [x], чтобы удалить элемент. Но вы хотите, чтобы он вызывал повторную сортировку всякий раз, когда вы изменяете свойство name в элементе.

Но вы не хотите, чтобы оно повторно сортировало при вводе символа, поэтому сначала нужно установить :

<input data-link="name trigger=false" />

См. Документы здесь для настройки триггера (сделано выше как локальное переопределение глобальной настройки).

Далее вы можете декларативно составить список элементов зависит от текста имени каждого элемента, написав

{^{for members sort='name' depends='members.[]^name'}}

Функция depends='members.[]^name' имеет очень мало документации, но является подстановочным знаком для реагирования на отдельные изменения свойств (здесь, name свойство) на любой элемент в массиве.

См. https://www.jsviews.com/#samples / sort-filter@jsv-for для образца, который его использует.

Вы также можете сделать depends='members.[]^*' для ответа на изменения любого свойства элемента массива.

И depends='members.**' также будет работать, для прослушивания любых изменений вообще в массиве members (см. документы здесь )

Вот рабочий пример, который использует описанный выше подход depends='members.[]^name':

https://jsfiddle.net/BorisMoore/b51tu27n/

...