Магистраль с виджетами дерева

Я оцениваю 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 файл с большим количеством коллекций и коллекции внутри коллекции.

С помощью этого плагина вы можете делать такие вещи, как:

  • Имеет массив определений отношений. Это означает, что вы можете определить дерево коллекций/моделей. здесь (http://backbonerelational.org/#RelationalModel-relations)

  • Укажите тип отношения, exmple: в некоторой коллекции может быть одна или несколько ссылок на тип отношения.

Продукт класса

расширяет 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