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()
,它仍将返回未定义的