我使用Angularjs作为前端
我已经定义了ttest
调用之前定义的变量$http
。
之后,我将数据分配给此变量。
值ttest[0]
在$http
函数中有值,但外面没有可用的值
angular.module('MyApp',['ngMaterial', 'ngMessages', 'material.svgAssetsCache'])
.controller('AppCtrl', function($scope,$http,$log) {
var imagePath = 'img/list/60.jpeg';
var ttest=[];
var url = "https://www.w3schools.com/angular/customers.php";
$http.get(url).then(function(response) {
ttest = response.data;
$scope.messages =ttest
$log.info(ttest[0]);
});
$log.info(ttest[0]);
});
答案 0 :(得分:1)
//Check the below comment ,you will find out what are you doing wrong
angular.module('MyApp',['ngMaterial', 'ngMessages', 'material.svgAssetsCache'])
.controller('AppCtrl', function($scope,$http,$log) {
var imagePath = 'img/list/60.jpeg';
var ttest=[];
var url = "https://www.w3schools.com/angular/customers.php";
$http.get(url).then(function(response) {
// ttest = response.data;
ttest = response.records; <-- change data to records
$scope.messages =ttest
$log.info(ttest[0]);
});
$log.info(ttest[0]);
});
答案 1 :(得分:0)
您正在进行的HTTP请求是异步的,这意味着它是非阻塞的。因此,在发送请求之前,会执行下面的代码。做这样的事情:
angular.module('MyApp',['ngMaterial', 'ngMessages', 'material.svgAssetsCache'])
.controller('AppCtrl', function($scope,$http,$log) {
var imagePath = 'img/list/60.jpeg';
var ttest=[];
var url = "https://www.w3schools.com/angular/customers.php";
$http.get(url).then(function(response) {
ttest = response.data;
$scope.messages =ttest
$log.info(ttest[0]);
$scope.yourCallback(); // do whatever you want to do here in this function
});
});
答案 2 :(得分:0)
在javascript范围内变量是功能性的。由于then
是回调函数,ttest
不在范围之外。
您可以在范围之外创建更新ttest
变量的函数,并从当时的回调函数中调用它。