【问题标题】:I want to print long_name from the json data using angularjs我想使用 angularjs 从 json 数据中打印 long_name
【发布时间】:2018-04-21 07:43:18
【问题描述】:

我正在尝试使用 Angular js 从以下 JSON 数据中获取 long_name,但无法获取。 代码:

 {
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "700109",
               "short_name" : "700109",
               "types" : [ "postal_code" ]
            },
            {
               "long_name" : "Kolkata",
               "short_name" : "Kolkata",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "West Bengal",
               "short_name" : "WB",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "India",
               "short_name" : "IN",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "Kolkata, West Bengal 700109, India",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 22.6902065,
                  "lng" : 88.38850289999999
               },
               "southwest" : {
                  "lat" : 22.6715168,
                  "lng" : 88.35748319999999
               }
            },
            "location" : {
               "lat" : 22.6808046,
               "lng" : 88.37577829999999
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 22.6902065,
                  "lng" : 88.38850289999999
               },
               "southwest" : {
                  "lat" : 22.6715168,
                  "lng" : 88.35748319999999
               }
            }
         },
         "place_id" : "ChIJ1-N4xFyc-DkRzfGq4MWZa1g",
         "types" : [ "postal_code" ]
      }
   ],
   "status" : "OK"
}

我正在使用以下代码来解决此问题,但它没有显示任何内容

代码:

<div ng-app="myApp" ng-controller="myController">
  <ul>
     <li ng-repeat="record in records">
         {{record.long_name}}
     </li> 
  </ul>
</div>
<script>
    var app=angular.module("myApp",[]);
    app.controller("myController",function($scope,$http){

        $http.get("https://maps.googleapis.com/maps/api/geocode/json?address=700109&key=AIzaSyDNK47S-6brePCvm1Hr6L7RFWAZvsngj1E")
        // $http.get("https://www.styfash.com/post/data.json")
        .then(function(result){
           $scope.records=result.data.results.address_components;

        });

    });
</script>

每当我尝试使用$scope.records=result.data.results 和打印{{record.address_components}} 时,它都可以正常工作,但每当我尝试使用上述代码时,它都不会在屏幕上显示任何内容。

我是 Angular js 的新手。

【问题讨论】:

    标签: angularjs json angularjs-ng-repeat fetch


    【解决方案1】:

    试试

    $scope.records=result.data.results[0].address_components;
    

    【讨论】:

    • 谢谢你,维韦克。代码正在运行,但我有一个问题,为什么我们应该添加 results[0] 即使我已经尝试过 results[1] 但这不起作用。你能解释一下吗?
    • @Shushovan :因为 results 是一个数组,我们只有一个元素,所以我们访问的是第 0 个元素。请将其标记为答案以帮助其他人进行搜索
    【解决方案2】:

    你应该明白的是,result.data.results 是一个数组。因此,您应该遍历它以获取子记录。检查下面的代码示例。

    var app = angular.module('myApp', []);
    
    app.controller('myController', function ($scope, $http) {
     			
          $http.get("https://maps.googleapis.com/maps/api/geocode/json?address=700109&key=AIzaSyDNK47S-6brePCvm1Hr6L7RFWAZvsngj1E")
            .then(function(result){
               $scope.records=result.data.results;
            });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    <div ng-app="myApp" ng-controller="myController">
      <ul>
        <div ng-repeat="record in records">
             <li ng-repeat="address in record.address_components">
             {{address.long_name}}
            </li>
         </div>      
      </ul>
    </div>

    如果您只需要第一条记录,请在代码中更改此行

    $scope.records=result.data.results.address_components;
    

    到这里

    $scope.records=result.data.results[0].address_components;
    

    【讨论】:

    • 非常感谢 Deneth。不知何故,我无法运行内部循环。这就是为什么它不起作用。现在它工作正常。但是您说 result.data.results[0].address_components 只会获取第一条记录,但是每当我运行代码时,它都会显示所有 long_name 数据。请解释一下这个问题。我的代码是: $scope.records=result.data.results[0].address_components;在脚本标签中。
    • 我的意思是第一个“结果”记录。如果您需要第一个 address_coponents,您应该执行类似 result.data.results[0].address_components[0]
    • 您能否向我解释一下为什么我们使用 results[0]?我已经尝试过不起作用的结果[1]。结果 [0] 我不清楚。它有什么作用?
    • results[0] 表示数组的第一个元素。在您的情况下,它只返回一个元素。因此, results[1] 不存在。数组的索引从 0 开始。希望这是有道理的
    • 再次非常感谢您。我再次检查了代码。这次我知道了results[0]的含义。另外,我已经运行代码只获取一条记录,即 result.data.results[0].address_components[0]。它仅显示第一条记录 700109。
    猜你喜欢
    • 2017-12-27
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-26
    • 1970-01-01
    • 2020-09-01
    相关资源
    最近更新 更多