用http get替换硬编码的json

时间:2015-04-20 19:29:13

标签: javascript json angularjs

继续学习一些Angular,我想知道如何将这个硬编码的JSON数组替换为使用http get拉取的JSON。这是plunker即时通讯工作。在顶部,我这样做是为了填充我在下拉列表中使用:

angular.module('myapp', [])
  .controller('MainCtrl', function($scope, $http) {
    var records;
    $scope.selCountry = '';
    $scope.searchText = '';
    $http.get('http://www.w3schools.com/angular/customers.php').success(function(dt) {
      //window.alert(angular.toJson(dt));

      var countries = [];
      records = dt.records;
      dt.records.forEach(function(o) {
        var c = o.Country;
        if (countries.indexOf(c) == -1)
          countries.push(c);
      });
      $scope.countries = countries;
      $scope.total = countries.length;
    });

我不知道这是否也是我填充阵列的地方?或者甚至是这样做的(就像我上面做的那样)。我是否必须为所有对象创建数组,或者我可以只访问传入的JSON。 THX。

1 个答案:

答案 0 :(得分:1)

是的,您可以在此处为您的范围变量分配api响应。你可以这样写:

 $http.get('http://www.w3schools.com/angular/customers.php').success(function(dt) {
  //window.alert(angular.toJson(dt));

  $scope.countries = [];
  $scope.records = dt.records;
  dt.records.forEach(function(o) {
    var c = o.Country;
    if ($scope.countries.indexOf(c) == -1)
      $scope.countries.push(c);
  });
  $scope.total = $scope.countries.length;
});

您也不需要$ scope.total变量。您可以使用$ scope.countries.length

来访问它