Магистраль с виджетами дерева
Я оцениваю Backbone javascript framework для использования в проекте, который будет отображать иерархическую модель в виджет древовидной структуры (думаю, что Браузер файлов Windows).
Мне нравится, как Backbone думает о мире. Тем не менее, есть много кодирования, прежде чем я получу доказательство концепции, в которой Backbone фактически получает иерархическую модель с сервера и обновляет виджет дерева. Я видел там различные решения для представляющие глубокие структуры данных с Backbone, но мне интересно... кто-нибудь на самом деле это сделал?
Просто зная, что это возможно, поможет. Фактически наименование компонента пользовательского интерфейса древовидного изображения и указателей для создания иерархии данных в Backbone было бы еще лучше. Немного кода примера будет потрясающе фантастическим.
В отношении размера данных дерево будет запускать 100 узлов (папок) с низким количеством 1000 элементов листа (документов), и было бы неплохо постепенно загружать данные (скажем, по одной папке за раз, когда пользователь нажимает in), хотя это, вероятно, не showstopper.
Спасибо!
Ответы
Ответ 1
один вариант, если вы не хотите перемещаться по иерархическому пути набора данных, заключается в использовании вложенного набора (http://en.wikipedia.org/wiki/Nested_set_model). это позволяет хранить всю коллекцию в одном массиве (или списке или любом другом, что вы хотите вызвать), и использовать "левое" и "правое" значение для определения структуры и иерархии списка.
Если я правильно помню, этот метод изначально был построен для оптимизации хранения и запросов данных в реляционной базе данных. однако, я использовал его несколько раз в приложениях С#/Winforms, чтобы избежать рекурсивной иерархии данных, и он работал хорошо.
реализация этого в javascript должна быть довольно простой, но я не знаю, насколько хорошо он будет работать с большим списком.
Ответ 2
Хороший вопрос, да, я сделал это раньше
Я использую базовую реляционную структуру, поскольку (http://backbonerelational.org/) 2013, и она отлично работает для меня.
Мой сценарий похож на ваш, у меня сложный JSON файл с большим количеством коллекций и коллекции внутри коллекции.
С помощью этого плагина вы можете делать такие вещи, как:
Продукт класса расширяет Backbone.RelationalModel
// просто пример.
relations: [
{
type : Backbone.Many
key : 'the name of model or collection'
}
Прочитайте документацию. Он работает хорошо.
Другим хорошим плагином, который помогает мне в моей реализации, является Model Binder (https://github.com/theironcook/Backbone.ModelBinder)
Это помогает связывать представления с моделями.
У меня все в порядке с этими плагинами, все работает.
Надеюсь, что это поможет.
Ответ 3
Возможно, вы найдете ответ на этой странице.
Я попытался написать иерархическое дерево на Backbone.js и Epoxy.js
https://stackoverflow.com/info/20639550/backbone-epoxy-js-and-hierarchies-trees
Это выглядит как:
- верхний уровень 1
- 2-й уровень, элемент 1
- 3-й уровень, элемент 1
- 3-й уровень, пункт 2
- 3-й уровень, пункт 3
- 2-й уровень, пункт 2
- 3-й уровень, пункт 4
- 3-й уровень, пункт 5
- 4-й уровень, пункт 1
- 4-й уровень, пункт 2
- 4-й уровень, пункт 3
- 3-й уровень, пункт 6
- верхний уровень 2
- 2-й уровень, пункт 3
- 3-й уровень, пункт 7
- 3-й уровень, элемент 8
- 3-й уровень, пункт 9
- 2-й уровень, пункт 4
- 3-й уровень, пункт 10
- 3-й уровень, элемент 11
- 3-й уровень, элемент 12