chuikoffru
@chuikoffru
Full Stack JS Developer

Как в AngularJS из одного контроллера отправить данные в другой контроллер?

Здравствуйте! У меня есть два контроллера profileController и notifyController,
и есть сервис PmService, мне нужно чтобы при клике на кнопку в profileController, обновлялись данные в notifyController. Писал по примеру отсюда

app.factory('PmService', function ($http) {

    function PmService(pmData) {
        if (pmData) {
            this.setData(pmData);
        }
    }

    PmService.prototype = {
        setData: function(pmData) {
            angular.extend(this, pmData);
        },
        load: function(id) {
            var scope = this;
            $http.post('/pm/read/' + id).success(function(pmData) {
                scope.setData(pmData);
            });
        },
        send : function(text) {

        }
    };

    return PmService;
});


notifyController
$scope.getPrivateMessages = function(id){
        $scope.privateMessages = new PmService();
        $scope.privateMessages.load(id);
    };

И во View всё хорошо отображается.

Но проблема с profileController

$scope.pm = new PmService();

<button ng-click="pm.setData({groups : {id : 1}})">Написать сообщение</button>


В общем новая информация не добавляется в другой контроллер.
  • Вопрос задан
  • 2247 просмотров
Пригласить эксперта
Ответы на вопрос 2
Serhioromano
@Serhioromano
Web Developer
Я бы сделал у сервиса одно свойство и назвал его типа groups или как то так. Потом, в setData

this.groups.push(pmData);

Ну и естественно в скопе сылка будет уже на

$scope.privateMessages.groups;

Ну и ng-click

ng-click="pm.setData({id : 1})
Ответ написан
Комментировать
@mayorovp
Все просто: new PmService() надо делать только один раз!

Либо найдите такой scope, который стал бы общим для обоих контроллеров - либо используйте внедрение зависимостей.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы