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

Почему не могу обновить данные при получения события?

Здравствуйте!
Подскажите, пожалуйста, в проблеме.

Есть функция, которая добавляет данные в БД.
После добавления отправляется событие $rootScope.$broadcast('db:change'):
$scope.addDb = function (name) {
        NetFactory.addDb(name).then(
            function (data) {
                $scope.message = data;
            }
        );

        $rootScope.$broadcast('db:change');
};


Код, который прослушивает событие:
$rootScope.$on('db:change', function () {
        NetFactory.getDbList().then(function (value) {
            $scope.dbList = value;
        });
});


Когда нажимаю по кнопке, вызывающей функцию добавления, то обновление данных происходит по-разному - то обновится сразу, то обновится после второго добавления или третьего и т.д.

Подскажите, пожалуйста, как решить проблему?
Или можно как-то лучше организовать обновление данных, в том числе и в разных контроллерах сиблингах?
  • Вопрос задан
  • 154 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@SuperOleg39ru
Front-end разработчик
Добрый день!

Broadcast вызывается до успешного добавления данных, поэтому его надо перенести в then. Попробуйте так:
$scope.addDb = function (name) {
        NetFactory.addDb(name).then(
            function (data) {
                $scope.message = data;
                $rootScope.$broadcast('db:change');
            }
        );
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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