Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs $scope不在get函数外部工作_Angularjs - Fatal编程技术网

Angularjs $scope不在get函数外部工作

Angularjs $scope不在get函数外部工作,angularjs,Angularjs,第二个控制台未定义,但第一个控制台工作正常。 以前它还在工作,不知道它已经停止工作了 angular.module('JobPortal').controller('UserActivityController',function($rootScope, $scope, $http, $timeout,$stateParams,$cookies, UserActivity){ var token = $cookies.get('token'); var param ={'tok

第二个控制台未定义,但第一个控制台工作正常。 以前它还在工作,不知道它已经停止工作了

angular.module('JobPortal').controller('UserActivityController',function($rootScope, $scope, $http, $timeout,$stateParams,$cookies, UserActivity){

    var token = $cookies.get('token');
    var param ={'token': token};
    UserActivity.user_get(param).success(function(data) {
        $scope.user_id = data._id;
        console.log($scope.user_id);
    });

    console.log($scope.user_id);

    $scope.profileCompletion = function(form) {
        //console.log($scope.user_id);

        var param = $scope.profComp;
        param.user_id = $scope.user_id;
        console.log(param);
        UserActivity.save_details(param).success(function(data) {
            //$scope.lastActivityID = data._id;
            window.location.href = "/vendor#/upload-resume";
        });
    }

});

这是因为第二个控制台首先执行

 angular.module('JobPortal').controller('UserActivityController',function($rootScope, $scope, $http, $timeout,$stateParams,$cookies, UserActivity){



 var token = $cookies.get('token');
    var param ={'token': token};
    UserActivity.user_get(param).success(function(data) {
        $scope.user_id = data._id;
        $scope.consoleUser();
    });

    $scope.consoleUser = function() {
        console.log($scope.user_id);
    }

});

它将在您的控制器上运行,并保存
承诺。在
$scope.profileCompletion
函数中,使用它来确保在调用该函数时,它将等待承诺完成(如果当时没有)

var promise = UserActivity.user_get(param).success(function(data) {
    $scope.user_id = data._id;
    console.log($scope.user_id);
});

$scope.profileCompletion = function(form) {
    promise.then(function(){
        var param = $scope.profComp;
        param.user_id = $scope.user_id;
        UserActivity.save_details(param).success(function(data) {
            //$scope.lastActivityID = data._id;
            window.location.href = "/vendor#/upload-resume";
        });
    }) 
}
angular.module('JobPortal').controller('UserActivityController',function($rootScope, $scope, $http, $timeout,$stateParams,$cookies, UserActivity){
     $scope.user_id = "";  //add this line
    var token = $cookies.get('token');
    var param ={'token': token};
    UserActivity.user_get(param).success(function(data) {
        $scope.user_id = data._id;
        console.log($scope.user_id);
    });

    console.log($scope.user_id);

    $scope.profileCompletion = function(form) {
        //console.log($scope.user_id);

        var param = $scope.profComp;
        param.user_id = $scope.user_id;
        console.log(param);
        UserActivity.save_details(param).success(function(data) {
            //$scope.lastActivityID = data._id;
            window.location.href = "/vendor#/upload-resume";
        });
    }

});

用下面的代码替换你的代码,它会工作的

angular.module('JobPortal').controller('UserActivityController',function($rootScope, $scope, $http, $timeout,$stateParams,$cookies, UserActivity){
     $scope.user_id = "";  //add this line
    var token = $cookies.get('token');
    var param ={'token': token};
    UserActivity.user_get(param).success(function(data) {
        $scope.user_id = data._id;
        console.log($scope.user_id);
    });

    console.log($scope.user_id);

    $scope.profileCompletion = function(form) {
        //console.log($scope.user_id);

        var param = $scope.profComp;
        param.user_id = $scope.user_id;
        console.log(param);
        UserActivity.save_details(param).success(function(data) {
            //$scope.lastActivityID = data._id;
            window.location.href = "/vendor#/upload-resume";
        });
    }

});

因为它被赋予了一个承诺。第二个控制台不是第一个出现吗?顺便说一句,您想解决什么问题?我需要从这里获取用户id,并将其分配到$scope.user\u id中。然后我在同一控制器的另一个函数中使用它。给出错误。
$scope.user\u id
正在异步分配。您可以保存承诺并使用
成功
然后
分配它。你能告诉我们你在哪里使用这个函数吗?“那么我在另一个函数中使用了这个,但是在同一个控制器中”那么这个控制器中的另一个函数在哪里?当$scope.profileCompletion被调用时?是的,它会工作,但它就像我们已经做的一样,为什么它不能直接工作?Plz Plz help我必须在另一个已通过单击链接的函数中使用$scope.user_id。它不起作用,因为一旦使用回调,它就变为异步。如何使用回调变为异步?如果我在第二个控制台所在的位置使用
$scope.consoleUser()
,它仍将返回
未定义的