Построить иерархические списки объектов с использованием MVC - PullRequest
0 голосов
/ 30 июня 2011

Я хочу создать приложение, в котором пользователь будет хранить данные в иерархическом порядке, например, используя вложенные списки записей. например

• entry1

• entry2

 °subentry1

 °subentry2

    -subsubentry1

• entry3

Мне было интересно, какой лучший способ построить это, используя шаблон MVC

Я полагаю, что каждый список должен быть массивом контроллера, а каждая запись - объектом модели. но список также имеет название!

Я предполагаю, что объект массива контроллера List должен иметь два свойства: заголовок, являющийся объектом модели Entry, и простой массив, в котором можно хранить больше объектов List и Entry.

Звучит правильно?

Второй момент: как мне подключить объекты просмотра? объекты Entry и List должны прослушивать события мыши и клавиатуры. они должны быть подключены с помощью системы ID?

Спасибо

PS: кстати, я использовал sproutcore javascript framework для сборки моего приложения. Но я бы хотел оставить дискуссию как независимую и открытую.

1 Ответ

2 голосов
/ 30 июня 2011

Я не понимаю, почему MVC оказывает какое-либо влияние на этот вопрос. Все, о чем вы говорите, - это моделирование данных. Ваша реализация того, как вы на самом деле отображаете ее, может появиться после того, как вы определили, как вы будете ее хранить, но не беспокойтесь о MVC на этом этапе.

В любом случае, быстрый ответ позволит вам глубже изучить, какое решение лучше всего подходит для вашего случая использования.

  • Список смежности
  • Модель вложенного набора
  • Перечисленный / Материализированный путь
  • .. и другой, который я не могу на всю жизнь вспомнить.

Я полностью поддерживаю Nested Set для моделирования иерархических данных, как вы только что упомянули, но я склонен также запускать Adjanceyc List рядом с ним, потому что мне легче опрашивать мои структуры данных.

Если я не полностью неправильно понял ваш вопрос, я не понимаю, почему MVC вовлечен в это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...