@Devastor
I ❤❤❤ JAVASCRIPT

Как правильно событийно обновлять $scope контроллера Angular?

Добрый день друзья!
Допустим у меня в контроллере есть функция, отвечающая за передачу некоего массива принятого с сервера в $scope
function MyCtrl($scope, req, calc){
$scope.update = function() {
        req.post('c=users&a=getAll', {}, function (res) {
                res = calc.calc(res[i]);
                $scope.items = res;
            }
        });
}
$scope.update();
}

У меня так же есть другой контроллер, в котором я отправляю данные из формы на сервер
function Add($scope, req){
$scope.save = function(){
        req.post('c=users&a=add', $scope.mydata, function(res){
             //в этом callback необходимо что то вроде MyCtrl.update();
        });
    }
}

После добавления, нужно, чтобы первый контроллер снова отправил запрос на сервер и записал в $scope обновленные данные.
Как наиболее правильно реализовать подобное?
  • Вопрос задан
  • 619 просмотров
Пригласить эксперта
Ответы на вопрос 1
AMar4enko
@AMar4enko
Вам нужно написать сервис, который будет инкапсулировать в себе все внешние взаимодействия.

User
   .getAll
   .add (после успешного выполнения запроса вызывает .onUserAdded)
   .onUserAdded


function MyCtrl($scope, req, calc, User){
  $scope.update = function() {
        User.getAll(function (res) {
                res = calc.calc(res[i]);
                $scope.items = res;
            }
        });
  }
  User.onUserAdded($scope.update);
  $scope.update();
}

function Add($scope, req, User){
  $scope.save = function(){
    User.add($scope.mydata);    
  }
}


Таким образом при добавлении пользователя будет вызван обработчик onUserAdded, на который будет подписан контроллер MyCtrl, что вызовет обновление списка.
Вам осталось только все это реализовать.
Ответ написан
Ваш ответ на вопрос

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

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