Задать вопрос
DieZz
@DieZz

Как правильно передать данные между контроллерами в AngularJs?

В приложении на Ангуляре использую ui-router. Грубо говоря основной экран разделен на две части: sideBar и main. Пример:
.state('node', {
                url: "/node",
                views: {
                    "main" : {
                        templateUrl: '/templates/node/node.html',
                        controller: 'NodeController',
                        }
                    },
                    "sideBar " : {
                        templateUrl : '/templates/sideBar.html',
                        controller: 'sideBarController',
                    }
                }
            })

Во view:main отображается таблица, каждая строчка которой является записью в таблице БД "node" (NodeController.nodes). Во view:sideBar кнопка с вызовом модального окна, с помощью которого можно добавить новую строчку в таблицу на сервере. Сервер в ответ отдает только что созданную запись, если все прошло успешно.
Вопрос: как правильнее сделать, чтобы после добавления в БД через модальное окно, добавить новую запись в NodeController.nodes.
У меня есть два варианта:
1. Создать сервис NodeService с переменной nodes. В эту переменную записывать все записи, добавлять из модального окна и, с помощью $scope.$watch в NodeController отслеживать изменения.
2. В sideBarController использовать $rootScope.$emit и соответственно $rootScope.$on в NodeController
  • Вопрос задан
  • 218 просмотров
Подписаться 2 Оценить 6 комментариев
Пригласить эксперта
Ответы на вопрос 2
R0dger
@R0dger
Laravel/Yii/2 AngularJs PHP RESTful API
почитайте тут - stepansuvorov.com/blog/2014/09/angularjs-data-transfer
надеюсь много что для себя подчеркнете.
Ответ написан
Комментировать
первый способ лучше, ввиду того что в тогда данные будут располагаться на "своей полочке".
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы