变量在我的第二种方法中未定义

variables gets undefined in my second method

我的 angularjs 应用程序中有一个控制器,我在其中调用了两个服务方法。

启动控制器后,我的第二个方法使用在第一个方法中设置的 $scope 值。 $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;
        });


    }
);

您可以尝试以下方法:

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

所以这个 returns 我们可以在下面使用并将结果传递给第二种方法的承诺:

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