ng:重复不加载数据

时间:2017-01-20 05:17:58

标签: javascript angularjs angularjs-ng-repeat

这是我的控制器功能,用于从服务器获取数据。

function carsController($http, $scope, $timeout) {
    var vm = this;
    vm.getCarData = getCarData;

    function getCarData(){
        $http.get('/api/getData').then(function (response) {
           console.log(response.data.message);
           vm.list = response.data.message;
         });          
   }
}

这是返回的数据。

{
    "message":[
        {
            "emp_id":1,
            "emp_name":"toyota",
            "city":"city1",
            "nic_no":4554
        },
        {
            "emp_id":2,
            "emp_name":"sunny",
            "city":"city2",
            "nic_no":57412
        },
        {
            "emp_id":3,
            "emp_name":"tata",
            "city":"city3",
            "nic_no":1234
        }
    ]
}

和html代码显示数据。我正在使用 carsController作为汽车

<div class="row" data-ng-init="cars.getCarData()">
  <div class="panel panel-default">
    <table class="table table-bordered table-hover">
      <tr>
        <th>Name</th>
        <th>Pages</th>
      </tr>
      <tr ng:repeat="vehicle in cars.list track by $index">
        <td>{{vehicle.emp_name}}</td>
        <td>{{vehicle.city}}</td>
      </tr>
    </table>
  </div>
</div>

而不是显示数据,UI在页面加载时显示100多个空行。

可能是什么问题?

已更新

如果我手动设置如下值,这很有效。

vm.list = [
        {
            "emp_id":1,
            "emp_name":"toyota",
            "city":"city1",
            "nic_no":4554
        },
        {
            "emp_id":2,
            "emp_name":"sunny",
            "city":"city2",
            "nic_no":57412
        },
        {
            "emp_id":3,
            "emp_name":"tata",
            "city":"city3",
            "nic_no":1234
        }
    ];

3 个答案:

答案 0 :(得分:0)

问题是,正如您在已发布的控制台日志中所看到的,response.data.message是一个对象。不是数组。 试试这个

vm.list = response.data.message.message;

以下将绑定消息数组

答案 1 :(得分:0)

你有两个问题。

  1. 您正在将vm.list分配给response.data.message,正如NJ_93指出的那样,它是一个对象。使用

    vm.list = response.data.message.message;
    
  2. 您没有从控制器调用getCarData()函数。所以从不提取数据。

答案 2 :(得分:-1)

您确定问题不是因为您使用了两个不同的对象。 vm.list用于从$http接收数据并使用cars.list进行ng-repeat

将数据存储到$scope.vm.list

并在用户界面中使用ng-repeat="cars in vm.list track by $index&#34;