переменные становятся неопределенными во втором методе

0

У меня есть контроллер в моем приложении angularjs, в котором я называю два метода обслуживания.

Когда контроллер запускается, мой второй метод использует значения $ scope, установленные в моем первом методе. Значения $ scope не определены, поскольку я не могу четко определить порядок выполнения здесь.

Почему мой второй метод вызывается до того, как мои значения области $ заданы в первом методе? И как я могу исправить это правильно?

angular.module("Modal")
.controller("MyController",
    function($scope, $log, ModalService, AuthService) {

        //First method - Calls a WEB API
        AuthService.FirstMethod(function (username) {
            $scope.username = "myName"; //Is set after SecondMethod is called
            $scope.items = "MyItems";
        });

        //Second method
        //$scope values here are undefined when initiating the controller
        ModalService.SecondMethod($scope.items, $scope.username, function (selectedItem) {
            var test = selectedItem;
        });


    }
);
  • 0
    используйте угловое обещание $ q.
Теги:
execution
controller

1 ответ

1
Лучший ответ

Вы можете попробовать следующее:

function wrapUpFirst() {
    return $q(function(resolve,reject) {
        // Execute this function
        AuthService.FirstMethod(function(result) {
            resolve(result);
        }, function(error) {
            // Handle error
            reject(error);
        });
    });
}

Таким образом, это возвращает обещание, которое мы можем использовать ниже, и передать результат второму методу:

wrapUpFirst().then(function(success) {
    // Use result for the second
    ModalService.SecondMethod(success, otherParams, func(){});
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню