不能检索Angularjs $scope数组的最后一个对象

Can't retrieve Angularjs $scope array last object

本文关键字:最后 一个对象 数组 scope 检索 Angularjs 不能      更新时间:2023-09-26

我在angularjs中有一个$scope中的object数组。我成功地将对象推入数组。它显示数组的形式在控制台,但我不能检索数组的最后一个对象,如javascript中的普通数组。以下是我的代码:

$scope.messages = [];
$http.get("http://localhost/php/retrieve_message.php").success(function (data)
{
    for (i = 0; i < data.length; i++)
    {
        $scope.messages.push(data[i]);
        console.log("success");
    }
}).error(function ()
{
    console.log("error");
});
console.log([$scope.messages); console.log($scope.messages[$scope.messages.length - 1]);

正确。

$scope.messages = [];
$http.get("http://localhost/php/retrieve_message.php").success(function(data) {
    for (i = 0; i < data.length; i++) {
        $scope.messages.push(data[i]);
        console.log("success");
    }
    console.log($scope.messages);
    console.log($scope.messages[$scope.messages.length - 1]);
}).error(function() {
    console.log("error");
});

您正在制作Asynchronous request

在这种情况下,当数据被接收时,你会收到一个回调,当你发出请求时,哪个选项可以让浏览器继续正常工作正在处理

 $scope.messages = [];
  $http.get("http://localhost/php/retrieve_message.php").success(function(data){
       for(i=0; i<data.length; i++){
            $scope.messages.push(data[i]);
             console.log("success");
       }
    // put your code in success method
    console.log($scope.messages);
    console.log($scope.messages[$scope.messages.length - 1]);
    }).error(function() {
        console.log("error");
    });

在您的示例中,您正在访问列表before the data has been received。所以$scope的长度。消息是0,您正在尝试获取$scope.messages[-1]

您可以了解更多关于同步和异步请求的信息

$scope.messages = [];
  $http.get("http://localhost/php/retrieve_message.php").success(function(data){
       // this callback function gets executed only after server returns a successful response. So, here you have access to data you have got from the server.
       for(i=0; i<data.length; i++){
            $scope.messages.push(data[i]);
             console.log("success");
       }
       console.log([$scope.messages);
       console.log($scope.messages[$scope.messages.length - 1]);
    }).error(function() {
        console.log("error");
    });
    // Following code executes before even server returns data.
    //console.log([$scope.messages);
    //console.log($scope.messages[$scope.messages.length - 1]);

尝试将for循环更新为:

for(var x in data){
    $scope.messages.push(x);
    console.log("success");
}