响应未显示在视图中(nodejs,mysql,angularjs)

时间:2016-06-30 13:23:22

标签: angularjs json

我正在尝试使用数据库中的数据填充基本角度应用程序。示例与w3schools中的示例类似。这是到目前为止的代码:

<div ng-app="myApp" ng-controller="customersCtrl">

    <table>
        <tr ng-repeat="x in names">
            <td>{{ x.id }}</td>
            <td>{{ x.appid }}</td>
        </tr>
    </table>
</div>    

<script>
    var app = angular.module('myApp', []);
        app.controller('customersCtrl', function($scope, $http) {
            $http.get("http://localhost:3000/test")
            .then(function (response) {$scope.names = response.data.records;}); 
        });
</script>

但是,没有检索到任何数据。我从http://localhost:3000/test得到的回复如下:

  

[

     

{ “ID”:1, “APPID”:1},{ “ID”:2 “APPID”:1},{ “ID”:7, “APPID”:1},   { “ID”:20, “APPID”:1},{ “ID”:38, “APPID”:1},{ “ID”:39, “APPID”:1},{ “ID”:40,” APPID “:1},{” ID “:41,” APPID “:3},{” ID “:44,” APPID “:3},{” ID “:70,” APPID “:2},{” ID “:71,” APPID “:2},{” ID “:72,” APPID“:2}

     

我从浏览器和邮递员那里检查了它。如果我用上面的响应替换response.data.records,该表将显示响应中的值。

我知道我一定是弄乱了什么,但不知怎的,我错过了它。我最好的猜测是响应的格式。

2 个答案:

答案 0 :(得分:2)

根据您显示的数据,您的问题应在替换时解决

$scope.names = response.data.records;

$scope.names = response.data;

因为您的示例响应只是一个数组而没有包含在record属性中。

答案 1 :(得分:2)

您需要从.records

中删除respnse.data
$http.get("http://localhost:3000/test")
        .then(function (response) {$scope.names = response.data;}); 

由于您直接接收数组,只需将响应中的数组直接分配给$scope.names