Пользуюсь библиотекой
choices.js (ванильный аналог select2), чтобы принимать что-то типа списка тегов.
СпойлерНа самом деле там не теги, а по факту select-multiple, просто реализую я это как выбор произвольных тегов с последующей проверкой item`ов через ajax и удалением невалидных. Всё это с Django на бэке, поэтому для reusability инициализирую либу в одном файле, а обработку item`ов в другом.
Чтобы всё было по правильному, инициализирую библиотеку в одном файле (
widget.js), а дальнейшую логику (специфичную именно для этого use case) реализую в другом (
reader-page.js).
Так вот, мне нужно обращаться к объектам (насколько я понимаю, экземпляры класса Choices) либы из второго файла, и так как каждый объект Choices относится к своему элементу DOM`а, решил хранить эти объекты в атрибутах элементов. Примерно так:
elem = $(".choicesjs")[0];
elem.choices = new Choices(elem);
Что-то мне подсказывает, что так не совсем корректно, ведь кто знает, может в будущей ревизии HTML определят атрибут choices для чего-то... Посмотрел на data-атрибуты, но они хранят лишь строки, а мой Choices сериализовать не удаётся.
Вопрос: как хранить сложные объекты в атрибутах элементов правильно?
Спасибо.