我的控制器代码是: -
var app = angular.module('myApp');
app.controller('myCtrl', function() {
$scope.year = "1350";
$scope.ord1 = "";
$scope.s1t1 = function() {
$http({
url: 's1t1.json',
method: 'GET'
}).then(function(response) {
$scope.set = response.data;
//console.log($scope.set);
$scope.obj = $scope.set.find(o => o.year === $scope.year);
$scope.ord1 = $scope.obj.ordinal;
});
}
alert($scope.ord1);
});
我在$scope.ord1
中得到了一个像44144的值。我需要在s1t1
函数之外的控制器中使用它。我用警报代表它。我也尝试使用$rootScope
,但结果是一样的。
答案 0 :(得分:1)
在代码中不会按顺序(同步)执行任务。 $http
是异步的,这意味着调用function
,发送请求但您的代码不会等待响应,而在function
调用之后您没有值< EM>尚未。您需要在then
。
答案 1 :(得分:0)
alert
,它将花费少量时间但你会得到一个值。调用要使用该值的函数。
var app = angular.module('myApp');
app.controller('myCtrl', function() {
$scope.year = "1350";
$scope.ord1 = "";
$scope.s1t1 = function() {
$http({
url: 's1t1.json',
method: 'GET'
}).then(function(response) {
$scope.set = response.data;
//console.log($scope.set);
$scope.obj = $scope.set.find(o => o.year === $scope.year);
$scope.ord1 = $scope.obj.ordinal;
alert($scope.ord1);
// Call a function where you want to use the value
myFunctionTousevalue();
});
}
var myFunctionTousevalue = function () {
alert('Using Value: '+$scope.ord1);
}
});
答案 2 :(得分:0)
使用超时功能
var app = angular.module('myApp');
app.controller('myCtrl', function($timeout) {
$scope.year = "1350";
$scope.ord1 = "";
$scope.s1t1 = function() {
$http({
url: 's1t1.json',
method: 'GET'
}).then(function(response) {
$scope.set = response.data;
//console.log($scope.set);
$scope.obj = $scope.set.find(o => o.year === $scope.year);
$scope.ord1 = $scope.obj.ordinal;
// Call a function in timeout
$timeout(funuction(){
myFunctionTousevalue();
},100)
});
}
var myFunctionTousevalue = function () {
alert('Using Value: '+$scope.ord1);
}
});