2016-11-18 2 views
2

Вторая консоль становится неопределенной, но первая работает нормально. Раньше он работал, не знаю, что он остановил работу.

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"; 
     }); 
    } 

}); 
+1

Потому что быть назначены в обещании. Первая консоль не отображается? Кстати, какой вопрос или вопрос вы хотите решить? – taguenizy

+0

Мне нужно получить user_id отсюда и вставить его в $ scope.user_id. то я использую это в другой функции, но тот же контроллер. он дает ошибку. –

+0

'$ scope.user_id' присваивается асинхронно. Вы можете сэкономить обещание и использовать 'success' или' then', как вы это сделали, чтобы назначить его. Не могли бы вы показать нам, какую функцию вы используете? – taguenizy

ответ

0

Это происходит, потому что вторая консоль выполняется в первую очередь.

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); 
    } 

}); 

он будет работать

+0

yah будет работать, но это как-то мы сделали, почему это не работает напрямую. ? Plz Plz help –

+0

Мне нужно использовать этот $ scope.user_id в другой функции, которая уже связана одним щелчком мыши. –

+0

не работает, потому что, как только вы используете обратный вызов, он становится асинхронным. – Akhil

0

На контроллере Сохраните promise. И внутри вашей функции $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"; 
     }); 
    }) 
} 
0

Заменить код с приведенной ниже он будет работать

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"; 
     }); 
    } 

}); 
Смежные вопросы