#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. Это удивительный пример. Спасибо!