试图用angularjs ng-repeat显示json数据不起作用

时间:2015-03-10 16:12:50

标签: javascript json angularjs ng-repeat

我已经看到很多方法可以做到这一点,但大多数都很老了,我想确保我正确地做到这一点。现在,我使用的方式不起作用,我觉得我错过了什么。

我正在让JSON恢复正常,我只需要在单击按钮后将其显示在表格中。

这是JSON。这就是我要从服务器上获取它的方法,我不能添加任何“var JSON =”或者向数据中添加任何范围如“$ scope.carrier”,除非有一种方法可以在我之后添加它我们获取了数据。

{
    "carrier": 
    [
        {
        "entity": "carrier",
        "id": 1,
        "parentEntity": "ORMS",
        "value": "Medica"
    }, {
        "entity": "carrier",
        "id": 2,
        "parentEntity": "ORMS",
        "value": "UHG"
    }, {
        "entity": "carrier",
        "id": 3,
        "parentEntity": "ORMS",
        "value": "Optum"
    }, {
        "entity": "carrier",
        "id": 4,
        "parentEntity": "ORMS",
        "value": "Insight"
    }, {
        "entity": "carrier",
        "id": 5,
        "parentEntity": "ORMS",
        "value": "Insight"
    }
    ]
}

这是用于恢复JSON数据的app.js文件:

var app = angular.module('myTestApp', []);

app.controller('myController', ['$scope', '$http', function($scope, $http) {
var url = 'test.json';
  $scope.clickButton = function() {
    $http.get(url).success(function(data) {
        console.log(data);
      });
  }
}]);

当然还有HTML:

<div class="col-lg-12 text-center">
             <button type=button class="btn btn-primary load" ng-click="clickButton()">Click!</button>
         <table class="">
             <tbody ng-repeat="carrier in carriers">
                <tr>
                    <td>
                        <h3 class="">{{ module.entity }}</h3>
                        <h3 class="">{{ module.id }}</h3>
                        <h3 class="">{{ module.parentEntity }}</h3>
                        <h3 class="">{{ module.value }}</h3>
                    </td>
                </tr>
                </tbody>
            </table>
        </div>

我也想知道我是否可以使用ng-grid将其放入表中。我知道他们只是将它升级到ui网格,所以我不确定这是否仍然是一种可行的方法。

另外,我没有收到错误,数据现在不会显示在表格中。我所知道的是它正确地返回数据,而不是在表格中显示。

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您永远不会将返回数组的值赋给$scope.carriers

在您说console.log(data);的行中添加以下内容:

$scope.carriers = data.data;

这是更新的clickButton函数(更改名称变量以减少混淆):

$scope.clickButton = function() {
  $http.get(url).success(function(returnValue) {
    $scope.carriers = returnValue.data;
  });
};

答案 1 :(得分:1)

我看着你的傻瓜好像你需要:

  • 添加角度脚本
  • 连接应用和控制器
  • 你在转发器中的变量是错的,我改了它

看看这个固定的羽毛球:

http://plnkr.co/edit/TAjnUCMOBxQTC6lNJL8j?p=preview

 $scope.clickButton = function() {
     $http.get(url).success(function(returnValue) {
         alert(JSON.stringify(returnValue.carrier));
         $scope.carriers = returnValue.carrier;  
      });
  }