Javascript Angularjs从另一个函数访问一个函数中的变量
我试图从另一个函数访问一个函数中的变量。我的代码与此类似 注意:我在代码的其他部分获得submitData.alcohold的值Javascript Angularjs从另一个函数访问一个函数中的变量,javascript,angularjs,Javascript,Angularjs,我试图从另一个函数访问一个函数中的变量。我的代码与此类似 注意:我在代码的其他部分获得submitData.alcohold的值 angular.module('app',['ui.router']) .controller('infoCtrl',['$scope','$http',functioninfoCtrl($scope,$http){ var result; $scope.one = function(){ if(submitData.alcohol=='
angular.module('app',['ui.router'])
.controller('infoCtrl',['$scope','$http',functioninfoCtrl($scope,$http){
var result;
$scope.one = function(){
if(submitData.alcohol=='1'){
result = 'Yes';
}else{
result = 'No';
}
};
$scope.two = function(){
console.log(result);
}
}]);
但我的日志中有一个“未定义”。如何修复此问题?将其改为“$scope.result”,而不是“result”
if (submitData.alcohol == '1') {
$scope.result = 'Yes';
} else {
$scope.result = 'No';
}
在问题中要提到的另一件事是,在返回结果之前,必须确保问题1已经完成。你能把你的全部代码都贴出来,让我们仔细看看吗?或者尝试在plunk或JSFIDLE中进行演示,可能有两个原因:
$scope.one
可能是异步函数,因此在$scope.one
完成之前,您的控制台.log(结果)
未定义打印$scope.one
从未被调用
var result = "";
$scope.one = function() {
if (submitData.alcohol == '1') {
result = 'Yes';
} else {
result = 'No';
}
};
$scope.two = function() {
$scope.one();
console.log(result);
}
更新:使用承诺$scope.one
函数在此
$scope.one = function(param) {
var deferred = $q.defer();
YourAPICall(param, function(data) {
deferred.resolve(data);
});
return deferred.promise;
};
$scope.two = function(){
$scope.one(param).then(function (data) {
console.log("data", data);//check for your condition here
});
}
您的$scope.two在此处运行
$scope.one = function(param) {
var deferred = $q.defer();
YourAPICall(param, function(data) {
deferred.resolve(data);
});
return deferred.promise;
};
$scope.two = function(){
$scope.one(param).then(function (data) {
console.log("data", data);//check for your condition here
});
}
您需要将变量附加到作用域:
var $scope.result = '';
并始终在if子句中以这种方式引用:
if(submitData.alcohol=='1') {
$scope.result = 'Yes';
} else {
$scope.result = 'No';
}
和conosole.log:
console.log($scope.result);
使用服务,这就是创建服务的原因。无需在同一控制器内使用服务。这太过分了。一个变量不止一个您确定要调用$scope.one函数吗?在它里面放一个日志什么是submitData?在当前发布代码的上下文中,它是未定义的。不是结果。@您能确认吗?再次记录值,就好像它有依赖项一样,然后你必须注入它。你不必这样做$作用域用于与视图共享数据。他的结果变量是在函数外声明的,所以没有问题。我认为这个函数永远不会被调用。啊,我同意,但是使用$scope.result会让他的生活变得更轻松,尤其是当他只想返回结果时。如果他申请的话,他甚至不需要第二个结果。我想原因可能是第一个。。如果是这样的话,我该如何解决这个问题?很抱歉我不明白。你能帮忙吗?你的API应该是什么?你正在进行的@CrazHydroid的API调用,或者你能发布完整的实际代码来查看吗