Общий подход левого бокового меню, который загружает различное содержимое в центре страницы

#angularjs

#angularjs

Вопрос:

Я начал изучать AngularJS, но мне нужны некоторые советы по дизайну приложений. Конечно, я не спрашиваю о макете, но … как правильно спроектировать мое приложение и его контроллеры. Я оставил боковую панель с меню, которое загружается из Интернета с использованием JSON. Для этого нужен контроллер. Это нормально. Это работает для меня. В центре моей страницы также есть поле содержимого, которое динамически загружает некоторые данные. На мой взгляд, для этого требуется другой контроллер.

И теперь приходит мое решение, которое почему-то выглядит не очень хорошо, ИМХО. Когда я нажимаю на пункт меню на боковой панели, я загружаю контент. Затем я передаю эти данные в службу, которая впоследствии отправляет событие на второй контроллер (который отвечает за управление моим контентом в центре моей страницы). Когда он получает это событие, он просто получает ранее загруженные данные из сервиса и отображает их. В целом это работает…. но… Я почти уверен, что это неправильный способ сделать это.

Я был бы благодарен за любые подсказки. У AngularJS действительно плохая документация и учебное пособие: (

приветствия

Редактировать:

ОК. Это мое базовое приложение, использующее jQuery:

http://greatanubis-motoscore.rhcloud.com/index

И это то же самое приложение, которое я конвертирую в AngularJS:

http://greatanubis-motoscore.rhcloud.com/angular/index

Не беспокойтесь, некоторый текст на польском, но… Я думаю, что это действительно не имеет значения 😉

Примечание для версии AngularJS: на данный момент содержимое представляет собой HTML, но в конечном итоге оно будет загружать данные JSON как другие контроллеры.

Комментарии:

1. Если бы вы могли опубликовать образец своего кода в plunker, это бы очень помогло. В противном случае сложно предоставить конструктивную критику.

2. Вы имеете в виду что-то вроде angular-ui-router, ngRoute ( ng-view ) или ng-include ?

3. ОК. Я обновил свой вопрос. Теперь вы можете ознакомиться с моей реализацией.

4. Вы пытались посмотреть пример вкладок на домашней странице angular? angularjs.org (найдите раздел «Создание компонентов») Я думаю, это то, что вы ищете.

5. Вы имеете в виду под «ng-conf 2014»? Ну .. как я вижу, он использует только один контроллер, который стоит сверху. У меня есть боковая панель. У меня должно быть что-то вроде глобального контроллера для управления моим боковым меню И контентом, верно?

Ответ №1:

Я бы сделал это с помощью angular ui-router. С помощью ui-router вы можете добиться этого несколькими способами. Вы можете использовать вложенную маршрутизацию, Чтобы иметь базовое состояние (ваше боковое меню, заголовок и т. Д.), Которое будет действовать как ваша страница оболочки, У него также может быть свой собственный контроллер. Затем вы могли бы определить каждое из этих других представлений как дочерние состояния базового состояния. У этих дочерних состояний также может быть свой собственный контроллер / представления, но они будут находиться внутри базового состояния (как визуально, так и наследуют $scope свойства базового состояния) при желании они могут сами разделять URL-адреса, но им это не нужно, вы можете просто изменять состояния без изменения URL-адреса, оставляя бит URL пустым, когда вы определяете разные состояния в своих $stateProvider конфигурациях. Другим способом было бы использовать функцию множественных именованных представлений.

Комментарии:

1. Спасибо, Мохаммад. Я немного поиграю с этим, прежде чем приму ваш ответ 🙂 Надеюсь, вы согласны с этим. приветствия

2. Нет проблем, я посмотрю, смогу ли я получить демо-версию для вас.

3. Действительно? Это было бы здорово. Спасибо!

4. Это удивительный пример. Спасибо!