Мне нравится вид дерева gijgo с чекбоксом как чистый и аккуратный, и он решает задачу отображения информации об иерархии.Обратитесь к ссылке ниже для документации.
https://gijgo.com/tree/demos/bootstrap-treeview-checkbox
Поскольку knockout.js является предпочтительным для разработки внешнего интерфейса, следовательно, необходимо разработать привязку для выбивания для этого конкретного требования.
Идея состоит в том, чтобы заполнить данные иерархии из серверной части и связать их с пользовательской привязкой выбивки.
Пользователь выбирает / снимает выбор некоторых флажков, а затем нажимает кнопку сохранения.выбранные / невыбранные данные снова отправляются на сервер для сохранения.
В приведенном ниже коде используется элемент управления в jquery.
Функция tree.getCheckedNodes()
возвращает массив выбранныхфлажки.
Как можно вызвать указанную выше функцию из привязки с выбиванием.
ko.bindingHandlers.tree = {
init: function (element, valueAccessor, allBindingsAccessor) {
},
update: function (element, valueAccessor, allBindingsAccessor) {
var options = valueAccessor() || {};
var value = ko.utils.unwrapObservable(valueAccessor());
var tree = $(element).tree(value);
}
}